CRM migration
Field-level mapping, validation, and rollback between Alpine IQ and Salesforce Sales Cloud. We move data and schema; workflows are rebuilt natively in Salesforce Sales Cloud.
Alpine IQ
Source
Salesforce Sales Cloud
Destination
Compatibility
8 of 12
objects map 1:1 between Alpine IQ and Salesforce Sales Cloud.
Complexity
BStandard
Timeline
1-2 weeks
Overview
Moving from Alpine IQ to Salesforce is a platform migration for cannabis retailers and multi-location operators that have outgrown Alpine IQ's loyalty-centric model and need Salesforce's broader CRM capabilities. Alpine IQ uses a Persona object as the primary contact unit with loyalty point balances, tier names, and audience memberships stored as properties on that record. Salesforce separates Leads and Contacts and stores loyalty data as custom fields on Contact. We extract Personas with their full PII, point balances, tier names, and opt-in flags, resolve each Persona to a Contact tied to a Location Account, and migrate Order history as Opportunity records with custom attribution fields. The Loyalty program rules governing point expiration and tier progression live in Alpine IQ's configuration layer and are not accessible via API; we preserve all balances and tiers accurately and document the rules for manual reconfiguration in Salesforce. Flows, discount groups tied to POS rules, and compliance configuration do not migrate; we deliver a written inventory of every active Flow and discount rule for your admin to rebuild in Salesforce or at the POS layer.
Every standard and custom field arrives verified.
AI proposes the map; you confirm before any record moves.
Parent–child, lookups, and ownership stay linked.
Calls, emails, meetings — with original timestamps.
Documents, uploads, and inline notes move with the record.
Why teams make this switch
Leaving
What's pushing teams away
Choosing
What's pulling them in
Object mapping
Each row shows how a Alpine IQ object lands in Salesforce Sales Cloud, including any object-level transformations, lookup resolution, or schema-design dependencies.
Typical mapping — final map is confirmed during the sample migration step.
Alpine IQ
Persona (Contact)
Salesforce Sales Cloud
Contact (on Account)
1:1Alpine IQ Personas map directly to Salesforce Contact records. We export all standard PII fields (name, phone, email, birthdate, address, med ID) via Alpine IQ's /api/v2/loyalty POST endpoint and insert into Salesforce Contact. Each Contact is resolved to a parent Account representing the dispensary location. The source integration ID is preserved in a custom field aiq_integration_source_id__c to maintain cross-reference to the originating POS record.
Alpine IQ
Company / Store
Salesforce Sales Cloud
Account
1:1Multi-location Alpine IQ accounts map each retail location to a Salesforce Account record. Single-location accounts map to one Account. The Account name is set to the store name as it appears in the POS system. We validate store name alignment between Alpine IQ and the connected POS (Dutchie, Flowhub, Cova) before migration to prevent loyalty attribution failures. Store name mismatches are flagged in the discovery report for customer resolution before data moves.
Alpine IQ
Order
Salesforce Sales Cloud
Opportunity + custom attribution fields
1:1Alpine IQ Order objects map to Salesforce Opportunity records. Order ID, status, substatus, and all timestamps migrate as Opportunity fields and custom date fields. Item data (product name, category, SKU, brand, price, discount) migrates as OpportunityLineItem records with the Standard Pricebook entry resolved at migration time. Attribution parameters (attr) storing campaign source and medium migrate to a custom field aiq_attr_parameters__c on the Opportunity, preserving campaign ROI reporting at the order level.
Alpine IQ
Loyalty Points
Salesforce Sales Cloud
Contact custom field (aiq_loyalty_points__c)
lossyAlpine IQ stores point balances as a numeric property on the Persona record. We export point balances and map them to a custom numeric field aiq_loyalty_points__c on the Salesforce Contact. Tier names map to a custom picklist field aiq_loyalty_tier__c. Point expiration logic, tier progression thresholds, and reward eligibility rules live in Alpine IQ's configuration layer and are not accessible via API. We preserve all balances accurately but the customer must manually recreate loyalty program rules in Salesforce's Loyalty Management module or as custom Flow logic post-migration.
Alpine IQ
Audience Membership
Salesforce Sales Cloud
Campaign + CampaignMember
1:manyAlpine IQ Audiences are segmented contact groups used for campaign targeting. We map audience membership to Salesforce Campaign records with the audience name as Campaign Name, and create CampaignMember records linking each Contact to the relevant Campaign. If the customer has many audiences (over 50), we discuss prioritization during scoping and migrate the top-frequency and top-spend segments first, with a full audience map delivered as a written inventory.
Alpine IQ
Opt-In Record (Email + SMS)
Salesforce Sales Cloud
Contact standard fields + custom compliance fields
1:1Alpine IQ tracks email and SMS opt-in status separately via /api/v2/optin endpoints. Email opt-in migrates to Salesforce's standard HasOptedOutOfEmail field. SMS opt-in migrates to a custom field aiq_sms_optin__c. Compliance flags for cannabis marketing restrictions migrate to a custom picklist field aiq_compliance_status__c. Accurate opt-in migration is critical for cannabis retailers operating under state-specific SMS marketing rules.
Alpine IQ
Discount Group
Salesforce Sales Cloud
Configuration (POS-level, no Salesforce equivalent)
lossyAlpine IQ discount groups map to specific POS discount rules and customer eligibility flags. The discount group name and eligibility flag migrate as custom fields aiq_discount_group__c and aiq_discount_eligible__c on Contact. However, the POS-level discount rules themselves (percentage off, loyalty multiplier, product eligibility) live in the POS system, not in Alpine IQ or Salesforce. We export the discount group configuration as a written inventory for the customer's POS admin to reapply at the POS layer.
Alpine IQ
Flow Events (order_created, order_completed, cart_abandoned)
Salesforce Sales Cloud
Task records (migration) + written Flow inventory (rebuild)
1:1Alpine IQ Flows are automation triggers based on behavioral events like order_created, order_completed, and cart_abandoned. These events do not map to Salesforce Flow triggers because Salesforce Flow's record-triggered model operates on CRM object events rather than POS ecommerce events. We export Flow event history as Activity Task records for audit completeness, and deliver a written inventory of every active Flow with its trigger conditions, actions, and a recommended Salesforce Flow equivalent for the customer admin to rebuild.
Alpine IQ
Custom Contact Properties
Salesforce Sales Cloud
Contact custom fields
1:1Alpine IQ supports custom fields on Persona records that can be set via override endpoints. We export all custom properties alongside standard fields, map them to Salesforce custom fields on Contact using a naming convention that preserves the Alpine IQ field name where possible (aiq_custom_{fieldname}__c). Custom field data types are mapped: text to Text, number to Number, date to Date, checkbox to Checkbox.
Alpine IQ
Push Notification IDs
Salesforce Sales Cloud
Not migratable (device tokens are platform-specific)
lossyMobile wallet push notification IDs are stored on Alpine IQ contacts via /api/v1.1/contact/addPushID. These IDs are device tokens specific to Alpine IQ's mobile integration and cannot be transferred between systems. We export the push notification ID list as a reference document for the customer's admin to re-enroll mobile users post-migration through the new Salesforce Mobile app or a custom push notification integration.
Alpine IQ
Integration Source IDs
Salesforce Sales Cloud
Contact custom field (aiq_integration_source_id__c)
1:1Every Alpine IQ contact carries a source ID from the integration that created it (POS, ecommerce, etc.). The /api/v1/piis/:uid/bySrcID endpoint allows lookup by source ID. We preserve all source IDs in a custom field aiq_integration_source_id__c on Contact to maintain cross-reference to the originating POS customer record. This enables reconciliation during the validation step and supports data quality checks if the customer runs dual-system periods.
Alpine IQ
Attribution Parameters (attr)
Salesforce Sales Cloud
Opportunity custom field (aiq_attr_parameters__c)
1:1The attr parameter on Alpine IQ order objects tracks campaign attribution and UTM-like sources. Attribution values are stored in the Order object and preserved in a custom field aiq_attr_parameters__c on the Opportunity during migration. The customer uses this field to rebuild campaign ROI reporting in Salesforce Reports or a connected BI tool post-migration. We do not parse the attr string into separate UTM fields unless requested during scoping.
| Alpine IQ | Salesforce Sales Cloud | Compatibility | |
|---|---|---|---|
| Persona (Contact) | Contact (on Account)1:1 | Fully supported | |
| Company / Store | Account1:1 | Fully supported | |
| Order | Opportunity + custom attribution fields1:1 | Fully supported | |
| Loyalty Points | Contact custom field (aiq_loyalty_points__c)lossy | Fully supported | |
| Audience Membership | Campaign + CampaignMember1:many | Fully supported | |
| Opt-In Record (Email + SMS) | Contact standard fields + custom compliance fields1:1 | Fully supported | |
| Discount Group | Configuration (POS-level, no Salesforce equivalent)lossy | Fully supported | |
| Flow Events (order_created, order_completed, cart_abandoned) | Task records (migration) + written Flow inventory (rebuild)1:1 | Fully supported | |
| Custom Contact Properties | Contact custom fields1:1 | Mapping required | |
| Push Notification IDs | Not migratable (device tokens are platform-specific)lossy | Mapping required | |
| Integration Source IDs | Contact custom field (aiq_integration_source_id__c)1:1 | Fully supported | |
| Attribution Parameters (attr) | Opportunity custom field (aiq_attr_parameters__c)1:1 | Fully supported |
Gotchas + challenges
Platform-specific issues from each side, plus the pair-specific challenges that don't show up on either platform's page on its own.
Alpine IQ gotchas
Blocklist contacts excluded from standard API GET
Store name matching required for loyalty attribution
Initial integration sync delay up to 24 hours
Points and tier expiration logic not exported
Salesforce Sales Cloud gotchas
Workflow Rules and Process Builder are retired
Bulk API batch quota exhaustion during large imports
Storage overage billing is non-obvious
Account-Contact many-to-many relationship mapping
Territory and team member import ordering dependencies
Pair-specific challenges
Migration approach
Discovery and scoping
We audit the Alpine IQ account across contact volume, loyalty tier count, audience group count, point balance distribution, active discount groups, POS integration type (Dutchie, Flowhub, Cova, or other), active Flows, and blocklist volume. We pair this with a Salesforce edition review: Professional ($80/user) covers most cannabis retail migrations; Enterprise ($165/user) is required if the customer needs record-triggered Flow at scale, advanced territory management, or custom report types; Unlimited ($330/user) only if 24x7 support and custom app distribution are required. The discovery output is a written migration scope, a store mapping validation report, and a loyalty program rules documentation request sent to Alpine IQ.
Schema design and store mapping validation
We design the Salesforce destination schema before any data moves. This includes creating custom fields for loyalty points (aiq_loyalty_points__c), loyalty tier (aiq_loyalty_tier__c), SMS opt-in (aiq_sms_optin__c), compliance status (aiq_compliance_status__c), discount group (aiq_discount_group__c), discount eligibility (aiq_discount_eligible__c), attribution parameters (aiq_attr_parameters__c), and integration source ID (aiq_integration_source_id__c). We validate that every store name in Alpine IQ exactly matches the corresponding location name in the connected POS. Any mismatches are documented and escalated to the customer for resolution before Account records are created in Salesforce.
Sandbox migration and reconciliation
We run a full migration into a Salesforce Sandbox (Full Copy or Partial Copy) using production-like data volume. The customer's operations lead reconciles record counts (Contacts in, Accounts in, Opportunities in, Campaign Members in), spot-checks 25-50 random records for field-level accuracy against the Alpine IQ source, and signs off the schema and mapping before production migration begins. Store mapping mismatches discovered during Sandbox migration are resolved at this stage, not in production.
Owner reconciliation and POS integration setup
We extract every distinct Alpine IQ owner referenced on Persona and Order records and match by email against the Salesforce destination org's User table. Any owners without a matching Salesforce User go to a reconciliation queue. The customer's admin provisions missing Users. We also coordinate with the POS integration team to ensure the Salesforce-Alpine IQ connection (if retained during transition) or a new Salesforce-POS integration is configured before production data moves, so that new orders post-cutover flow to Salesforce automatically.
Production migration in dependency order
We run production migration in record-dependency order: Accounts (from Alpine IQ store locations, validated against POS store names), Contacts (with AccountId resolved and loyalty fields populated from Persona properties), Opportunities (from Orders with aiq_attr_parameters__c and OpportunityLineItems from order items), Campaign records (from Alpine IQ Audiences with CampaignMember records linking Contacts), SMS and email opt-in fields, custom contact properties, and Flow event history as Activity records. Each phase emits a row-count reconciliation report before the next phase begins.
Cutover, validation, and Flow rebuild handoff
We freeze writes to Alpine IQ during cutover, run a final delta migration of any records modified during the migration window, then enable Salesforce as the system of record. We validate loyalty tier counts, opt-in accuracy, order attribution parameters, and audience membership against Alpine IQ reporting before sign-off. We deliver the Flow and discount group inventory document to the customer's admin team. We support a one-week hypercare window where we resolve reconciliation issues raised by the customer's operations team. We do not rebuild Alpine IQ Flows as Salesforce Flow inside the migration scope; that work is documented separately for the customer's admin or a Salesforce partner.
Platform deep dives
Alpine IQ
Source
Strengths
Weaknesses
Salesforce Sales Cloud
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. 1 of 8 objects need a mapping; the rest are 1:1.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Alpine IQ and Salesforce Sales Cloud.
Object compatibility
1 of 8 objects need a mapping; the rest are 1:1.
Field mapping clarity
Field mapping is derived from defaults — final spec confirmed during the sample migration.
Timeline complexity
8-object category — typical timelines run 2–7 days end-to-end.
API constraints
Alpine IQ: 5 requests per second, 120 per minute, and 2,000 per hour per documented developer guide..
Data volume sensitivity
Alpine IQ doesn't expose a bulk API — REST + parallelization used for high-volume runs.
Estimator
Rule-based pricing — no per-record fees, no manual quotes. Migrations over 2M records are scoped individually.
Step 1
Pick a category, then your source and destination platforms.
Category
FAQ
Answers to the questions buyers ask most during Alpine IQ to Salesforce Sales Cloud migration scoping. Not seeing yours? Book a call.
Walk through your Alpine IQ to Salesforce Sales Cloud migration with a real engineer — 30 minutes, free, written quote within 24 hours.
Book a free 30 minute consultationAdjacent paths
Other ways to leave Alpine IQ
Other ways to arrive at Salesforce Sales Cloud
Ready when you are
Tell us record counts and timeline. We'll come back with a written quote inside 1 business day — no commitment, no sales pitch.