/crm-sync
Sync data to CRM platforms. Use when: pushing contacts, deals, or campaigns to Salesforce, HubSpot, Zoho, or Pipedrive.
$ npx -y skills add indranilbanerjee/digital-marketing-pro --skill crm-sync --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/crm-sync
Context preview
The summary Claude sees to decide when to auto-load this skill.
Sync data to CRM platforms. Use when: pushing contacts, deals, or campaigns to Salesforce, HubSpot, Zoho, or Pipedrive.
SKILL.md
crm-sync.SKILL.mdname: crm-sync
description: "Sync data to CRM platforms. Use when: pushing contacts, deals, or campaigns to Salesforce, HubSpot, Zoho, or Pipedrive."
disable-model-invocation: false
argument-hint: "[crm-platform]"
/digital-marketing-pro:crm-sync
Purpose
Sync marketing data to and from the brand's connected CRM platform. Handles contact creation, deal updates, and campaign linking with automatic field mapping, deduplication, and compliance checks. Supports Salesforce, HubSpot, Zoho, and Pipedrive with bi-directional sync capabilities, ensuring marketing and sales teams operate from a single source of truth without manual data entry or import/export cycles. Designed for both one-time bulk syncs and recurring automated transfers, with full audit trails and rollback capabilities for enterprise-grade data governance.
Use this command instead of manual CSV imports when you need deduplication, compliance validation, or audit logging. For lead-specific imports with scoring, use `/digital-marketing-pro:lead-import` instead.
Execution gate (MANDATORY — cannot be skipped)
1. Present the full preview — recipients / spend / changes / compliance — as an **Execution Summary** before touching any live system. 2. The user must type `yes` (or an equivalent explicit approval). ANY other input — ambiguous, implied, partial, or absent approval — cancels the run. 3. Never proceed on ambiguous input. Never auto-retry a failed execution; a failure needs human review before any re-run. 4. Record the approval with `python "${CLAUDE_PLUGIN_ROOT}/scripts/approval-manager.py" --brand {slug} --action create-approval --data '{"risk_level":"<tier>","summary":"..."}'` **before** executing, then `python "${CLAUDE_PLUGIN_ROOT}/scripts/approval-manager.py" --brand {slug} --action mark-executed --id {approval_id}` after the platform confirms success.
Input Required
The user must provide (or will be prompted for):
- **Sync type**: What to sync — contacts, deals, campaigns, or a combination of multiple object types in a single operation
- **Data source**: Where the data comes from — CSV file path, JSON array, manual entry, or data from another connected MCP (e.g., Google Sheets, email platform, ad platform)
- **Target CRM platform**: Salesforce, HubSpot, Zoho, or Pipedrive — and the specific object type if applicable (e.g., Salesforce Leads vs. Contacts, HubSpot Contacts vs. Companies)
- **Sync direction**: One-way push (marketing to CRM), one-way pull (CRM to marketing), or bi-directional merge with conflict resolution preference (source wins, CRM wins, or most recent wins)
- **Field mapping overrides (optional)**: Custom mappings if default field mapping does not match the CRM's schema — e.g., "company_name" maps to "Account Name" in Salesforce, or "phone_mobile" maps to "MobilePhone"
- **Deduplication strategy**: Match on email, phone, CRM ID, or composite key — and whether to update existing records, skip duplicates, or merge fields from both sources
- **Consent and compliance requirements**: Whether GDPR consent fields, opt-in status, or data processing basis must be validated before sync — and which markets' regulations apply
- **Record filters (optional)**: Criteria to limit which records are synced — date range, segment membership, source campaign, lifecycle status, or custom field values
- **Batch size preference (optional)**: Number of records per API batch — smaller batches for safer rollback, larger batches for speed on high-volume syncs
- **Notification preferences**: Whether to alert sales reps when new contacts or deals are synced to their pipeline, and via which channel (CRM notification, email, Slack)
- **Relationship linking**: Whether to associate synced contacts with existing accounts, deals, or campaigns in the CRM — and the lookup key for matching (domain, account name, deal ID)
- **Tag or list assignment (optional)**: Tags, lists, or campaign memberships to apply to synced records for downstream segmentation and reporting attribution
- **Error handling preference**: What to do when individual records fail — skip and continue (log failures for later), halt the entire sync (rollback completed records), or quarantine failed records for manual review
- **Sync schedule (optional)**: Whether this is a one-time sync or should be saved as a recurring sync template — if recurring, specify frequency (hourly, daily, weekly) and whether to sync only records modified since the last run (incremental) or all matching records (full)
Process
1. **Load brand context**: Read `~/.claude-marketing/brands/_active-brand.json` for the active slug, then load `~/.claude-marketing/brands/{slug}/profile.json`. Apply brand voice, compliance rules for target markets (`skills/context-engine/compliance-rules.md`), and industry context. **Also check for guidelines** at `~/.claude-marketing/brands/{slug}/guidelines/_manifest.json` — if present, load restrictions and relevant category files. Check for agency SOPs at `~/.claude-marketing/sops/`. If no brand exists, ask: "Set up a brand first (/digital-marketing-pro:brand-setup)?" — or proceed with defaults. 2. **Check connected CRM status**: Run `python "${CLAUDE_PLUGIN_ROOT}/scripts/crm-sync.py" --brand {slug} --action get-crm-status` to verify platform connection, API credentials, rate limit headroom, and available objects. If no CRM is connected, guide the user to configure their CRM MCP integration and provide platform-specific setup instructions. 3. **Validate input data**: Parse the source data and validate required fields — check email format (RFC 5322), phone number normalization (E.164), required field presence, data type consistency, and character encoding. Flag invalid records with specific error reasons and separate them from the valid set. 4. **Map fields to CRM schema**: Consult `skills/context-engine/crm-integration-guide.md` for standard field mappings per platform. Auto-map matching field names, apply user overrides, identify unmapped sour
Read more
name: crm-sync description: "Sync data to CRM platforms. Use when: pushing contacts, deals, or campaigns to Salesforce, HubSpot, Zoho, or Pipedrive." disable-model-invocation: false argument-hint: "[crm-platform]"
/digital-marketing-pro:crm-sync
Purpose
Sync marketing data to and from the brand's connected CRM platform. Handles contact creation, deal updates, and campaign linking with automatic field mapping, deduplication, and compliance checks. Supports Salesforce, HubSpot, Zoho, and Pipedrive with bi-directional sync capabilities, ensuring marketing and sales teams operate from a single source of truth without manual data entry or import/export cycles. Designed for both one-time bulk syncs and recurring automated transfers, with full audit trails and rollback capabilities for enterprise-grade data governance.
Use this command instead of manual CSV imports when you need deduplication, compliance validation, or audit logging. For lead-specific imports with scoring, use `/digital-marketing-pro:lead-import` instead.
Execution gate (MANDATORY — cannot be skipped)
1. Present the full preview — recipients / spend / changes / compliance — as an **Execution Summary** before touching any live system. 2. The user must type `yes` (or an equivalent explicit approval). ANY other input — ambiguous, implied, partial, or absent approval — cancels the run. 3. Never proceed on ambiguous input. Never auto-retry a failed execution; a failure needs human review before any re-run. 4. Record the approval with `python "${CLAUDE_PLUGIN_ROOT}/scripts/approval-manager.py" --brand {slug} --action create-approval --data '{"risk_level":"<tier>","summary":"..."}'` **before** executing, then `python "${CLAUDE_PLUGIN_ROOT}/scripts/approval-manager.py" --brand {slug} --action mark-executed --id {approval_id}` after the platform confirms success.
Input Required
The user must provide (or will be prompted for):
- **Sync type**: What to sync — contacts, deals, campaigns, or a combination of multiple object types in a single operation
- **Data source**: Where the data comes from — CSV file path, JSON array, manual entry, or data from another connected MCP (e.g., Google Sheets, email platform, ad platform)
- **Target CRM platform**: Salesforce, HubSpot, Zoho, or Pipedrive — and the specific object type if applicable (e.g., Salesforce Leads vs. Contacts, HubSpot Contacts vs. Companies)
- **Sync direction**: One-way push (marketing to CRM), one-way pull (CRM to marketing), or bi-directional merge with conflict resolution preference (source wins, CRM wins, or most recent wins)
- **Field mapping overrides (optional)**: Custom mappings if default field mapping does not match the CRM's schema — e.g., "company_name" maps to "Account Name" in Salesforce, or "phone_mobile" maps to "MobilePhone"
- **Deduplication strategy**: Match on email, phone, CRM ID, or composite key — and whether to update existing records, skip duplicates, or merge fields from both sources
- **Consent and compliance requirements**: Whether GDPR consent fields, opt-in status, or data processing basis must be validated before sync — and which markets' regulations apply
- **Record filters (optional)**: Criteria to limit which records are synced — date range, segment membership, source campaign, lifecycle status, or custom field values
- **Batch size preference (optional)**: Number of records per API batch — smaller batches for safer rollback, larger batches for speed on high-volume syncs
- **Notification preferences**: Whether to alert sales reps when new contacts or deals are synced to their pipeline, and via which channel (CRM notification, email, Slack)
- **Relationship linking**: Whether to associate synced contacts with existing accounts, deals, or campaigns in the CRM — and the lookup key for matching (domain, account name, deal ID)
- **Tag or list assignment (optional)**: Tags, lists, or campaign memberships to apply to synced records for downstream segmentation and reporting attribution
- **Error handling preference**: What to do when individual records fail — skip and continue (log failures for later), halt the entire sync (rollback completed records), or quarantine failed records for manual review
- **Sync schedule (optional)**: Whether this is a one-time sync or should be saved as a recurring sync template — if recurring, specify frequency (hourly, daily, weekly) and whether to sync only records modified since the last run (incremental) or all matching records (full)
Process
1. **Load brand context**: Read `~/.claude-marketing/brands/_active-brand.json` for the active slug, then load `~/.claude-marketing/brands/{slug}/profile.json`. Apply brand voice, compliance rules for target markets (`skills/context-engine/compliance-rules.md`), and industry context. **Also check for guidelines** at `~/.claude-marketing/brands/{slug}/guidelines/_manifest.json` — if present, load restrictions and relevant category files. Check for agency SOPs at `~/.claude-marketing/sops/`. If no brand exists, ask: "Set up a brand first (/digital-marketing-pro:brand-setup)?" — or proceed with defaults. 2. **Check connected CRM status**: Run `python "${CLAUDE_PLUGIN_ROOT}/scripts/crm-sync.py" --brand {slug} --action get-crm-status` to verify platform connection, API credentials, rate limit headroom, and available objects. If no CRM is connected, guide the user to configure their CRM MCP integration and provide platform-specific setup instructions. 3. **Validate input data**: Parse the source data and validate required fields — check email format (RFC 5322), phone number normalization (E.164), required field presence, data type consistency, and character encoding. Flag invalid records with specific error reasons and separate them from the valid set. 4. **Map fields to CRM schema**: Consult `skills/context-engine/crm-integration-guide.md` for standard field mappings per platform. Auto-map matching field names, apply user overrides, identify unmapped sour
Your agency just signed a 50-brand client. The previous agency left no playbook. Three brands are bleeding budget, two have stale positioning, one is launching in a regulated jurisdiction next month. Where do you start?
Other skills on digital-marketing-pro.
- /ab-test-plan
Design A/B and multivariate tests. Use when: sample size calculation, testing hypothesis, CRO experimentation.
Open skill - /ad-creative
Generate platform-specific ad copy. Use when: Google RSA, Meta, LinkedIn, TikTok ad variations with quality scoring.
Open skill - /add-integration
Add MCP server integrations. Use when: connecting a custom tool, API, or service to the plugin via .mcp.json.
Open skill - /aeo-audit
Audit AI search visibility. Use when: checking brand presence in ChatGPT, Perplexity, AI Overviews, Gemini.
Open skill - /aeo-geo
Optimize AI engine visibility. Use when: AEO/GEO strategy, citation optimization, entity consistency across AI platforms.
Open skill - /agency-dashboard
Portfolio-level agency dashboard aggregating health metrics across all client brands — campaign status, budget pacing, KPI attainment, team utilization. Use when reviewing cross-brand portfolio health, preparing for agency leadership standups, or getting a single-view snapshot
Open skill

