CRM migration

Migrate from Alpine IQ to Freshsales

Field-level mapping, validation, and rollback between Alpine IQ and Freshsales. We move data and schema; workflows are rebuilt natively in Freshsales.

Alpine IQ logo

Alpine IQ

Source

Freshsales

Destination

Freshsales logo

Compatibility

80%

8 of 10

objects map 1:1 between Alpine IQ and Freshsales.

Complexity

BStandard

Timeline

2-4 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Alpine IQ and Freshsales serve different primary use cases. Alpine IQ is a customer engagement and loyalty CRM purpose-built for regulated retail markets, particularly cannabis dispensaries, with deep POS integrations, behavioral audience segmentation, and compliance tooling. Freshsales is a general SMB sales CRM from Freshworks with built-in phone, email, AI-powered lead scoring, and a standard Contacts-Accounts-Deals data model. The migration from Alpine IQ to Freshsales is a platform pivot: a cannabis retailer or regulated-industry operator moving to a general-purpose CRM typically means trading loyalty-native architecture and compliance tooling for broader sales automation, a larger app ecosystem, and per-seat pricing that scales predictably. We migrate Personas as Freshsales Contacts, Orders as Deals with line items, loyalty point balances as numeric custom fields, opt-in status as contact properties, and attribution parameters as deal-level fields. We do not migrate loyalty program rules (point expiration, tier thresholds, reward eligibility) because Alpine IQ stores these as configuration rather than data; we deliver a written loyalty-program inventory for the customer to rebuild in Freshsales.

Field-level fidelity

Every standard and custom field arrives verified.

Schema-aware mapping

AI proposes the map; you confirm before any record moves.

Relationships preserved

Parent–child, lookups, and ownership stay linked.

Full activity history

Calls, emails, meetings — with original timestamps.

Attachments & notes

Documents, uploads, and inline notes move with the record.

Why teams make this switch

Two sides of the same decision

Leaving

Alpine IQ logo

Alpine IQ

What's pushing teams away

  • Steep learning curve with a complex, layered interface makes onboarding staff time-consuming and delays realizing value from advanced segmentation and automation features.
  • Reporting tools lack customization and flexibility—dashboards are difficult to parse at a glance and loading times for filtered reports frustrate marketing teams.
  • SMS deliverability and compliance requirements in regulated markets can limit campaign effectiveness, especially as carriers tighten filtering on cannabis-adjacent content.
  • Multi-location store mapping requires exact name matching between Alpine IQ and POS systems, creating friction during rollout and causing sync failures when locations are renamed.
  • Per-store and per-contact pricing model historically inflated costs for growing dispensary chains, prompting operators to evaluate alternatives when expanding across new markets.

Choosing

Freshsales logo

Freshsales

What's pulling them in

  • Lowest barrier to entry among major CRMs — the free tier supports up to 3 users and includes core CRM functionality before committing to per-seat pricing.
  • Built-in chat, email, and phone reduce reliance on third-party integrations for basic sales communication and contact management.
  • Freddy AI contact scoring and deal insights are included on Pro plans at a lower price than comparable HubSpot tiers.
  • Kanban pipeline views across Contacts, Accounts, and Deals provide visual deal management without requiring custom configuration.
  • Integration with the broader Freshworks ecosystem (Freshdesk, Freshchat, Freshservice) reduces tool sprawl for teams already using Freshworks.

Object mapping

How Alpine IQ objects map to Freshsales

Each row shows how a Alpine IQ object lands in Freshsales, 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)

maps to

Freshsales

Contact

1:1
Fully supported

Alpine IQ Personas map directly to Freshsales Contacts. Standard PII fields (firstname, lastname, email, phone, birthday, birthdayday, birthdaymonth, birthdayyear, gender) migrate to Freshsales Contact fields. Medical ID and compliance fields migrate to custom Contact fields (med_id__c, compliance_state__c, customer_type__c for veteran/police/local status) that the customer configures post-migration. Birthdate parsing from Alpine IQ's three-field format (birthday, birthdayday, birthdaymonth) combines into Freshsales Date_of_Birth.

Alpine IQ

Opt-In Record

maps to

Freshsales

Contact (custom properties)

1:1
Fully supported

Alpine IQ stores SMS and email opt-in status separately via /api/v2/optin endpoints. We export both email opt-in and SMS opt-in as boolean contact properties: email_opt_in__c and sms_opt_in__c. For email, Freshsales uses the standard HasOptedOutOfEmail field (inverted logic: true means opted out). For SMS, Freshsales does not have a native SMS opt-out field, so we use a custom field sms_opt_in__c. Blocklisted contacts are silently excluded from standard GET responses; we query alternative endpoints where available and cross-reference opt-in flags on returned records to build a complete suppression list.

Alpine IQ

Order

maps to

Freshsales

Deal (Opportunity)

1:many
Fully supported

Alpine IQ Order objects carry customer PII, item-level data (product name, category, SKU, brand, price, discount), payment details, attribution parameters, and timestamps. We split each Order into a Freshsales Deal (Opportunity) at the header level (order ID, status, timestamps, totals, tax, tip) and individual Deal Line Items for each product line. The attr attribution parameter on each order migrates to a custom Opportunity field attribution_source__c for campaign ROI reporting.

Alpine IQ

Order Item

maps to

Freshsales

Deal Line Item

1:1
Fully supported

Order line items (product name, SKU, brand, category, price, discount) map to Freshsales Deal Product records. We create Product2 records in Freshsales for each distinct SKU, set Standard Price Book entries, and link line items to the parent Opportunity during migration. Discount values migrate as custom line-item fields if the destination Freshsales edition supports them.

Alpine IQ

Loyalty Program (Points and Tiers)

maps to

Freshsales

Contact (custom fields)

1:1
Fully supported

Alpine IQ stores point balances and tier status on the Persona record. We export point_balance as a numeric custom field loyalty_points__c and tier_name as a text field loyalty_tier__c. The rules governing point expiration, tier progression thresholds, and reward eligibility are configuration-level settings in Alpine IQ and are NOT exported as data. We deliver a written loyalty-program inventory document listing all point tiers, earning rates, expiration rules, and reward structures so the customer's Freshsales admin can rebuild equivalent logic using Freshsales Workflows or a third-party loyalty app.

Alpine IQ

Audience

maps to

Freshsales

List

1:1
Fully supported

Alpine IQ Audiences are segmented contact groups used for campaign targeting. Each contact's audience membership (with points multiplier) is stored by contact ID. We map each Alpine IQ Audience to a Freshsales Static List and populate it with the matching Contacts. Dynamic List behavior (auto-updating membership based on criteria) cannot be replicated without Freshsales dynamic filter logic, which requires post-migration configuration. Audience points multipliers migrate as a custom field audience_multiplier__c on the Contact.

Alpine IQ

Discount Group

maps to

Freshsales

Contact (custom field)

1:1
Fully supported

Alpine IQ discount groups map to POS discount rules and customer eligibility flags. The Dutchie integration guide shows discount groups as a mapped field in the customer profile. We export discount_group as a text field discount_group__c on the Contact record. Discount rule logic (percentage off, buy-one-get-one, member-only pricing) does not migrate as configuration; the customer reviews and rebuilds discount eligibility in Freshsales.

Alpine IQ

Store/Location Mapping

maps to

Freshsales

Account (custom field)

1:1
Fully supported

Multi-location Alpine IQ accounts require each integration or data source to be mapped to a specific store location. Store names in Alpine IQ must exactly match location names in the connected POS (Dutchie, Cova, Flowhub, etc.). We extract the full store mapping configuration from Alpine IQ and create Account records in Freshsales representing each location. The contact's preferred store or favorite-store attribution migrates as a lookup field store_location__c pointing to the corresponding Account. Store name mismatches between Alpine IQ and POS are flagged during scoping and must be resolved before migration begins.

Alpine IQ

Custom Contact Properties

maps to

Freshsales

Contact (custom fields)

lossy
Mapping required

Alpine IQ supports custom fields on Persona records set via override endpoints. We export all custom properties alongside standard fields. Custom property names in Alpine IQ map to Freshsales custom Contact fields using the same label (with spaces removed and underscores substituted). Field types are mapped: text to Text, number to Number, date to Date, boolean to Checkbox. We pre-create all custom fields in Freshsales before migration begins.

Alpine IQ

Attribution Parameters

maps to

Freshsales

Deal (custom field)

1:1
Fully supported

The attr parameter on Alpine IQ orders stores campaign attribution (UTM-like sources, campaign IDs). Attribution values are stored in the Order object and migrate to Freshsales Opportunity custom fields: attribution_source__c, attribution_campaign__c, and attribution_medium__c. These fields enable campaign ROI reporting at the opportunity level in Freshsales reporting.

Gotchas + challenges

What specifically takes care here

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 logo

Alpine IQ gotchas

Medium

Blocklist contacts excluded from standard API GET

High

Store name matching required for loyalty attribution

Low

Initial integration sync delay up to 24 hours

Medium

Points and tier expiration logic not exported

Freshsales logo

Freshsales gotchas

Medium

Freddy AI is Pro-tier only despite heavy marketing

High

Post-migration emails and sequences are disabled

Medium

Bot session credits are a one-time 500-session allocation

Medium

Phone credits charged per minute with no cap

Low

File storage limits scale with plan tier

Pair-specific challenges

  • Blocklist contacts silently excluded from API export

    Alpine IQ's Personas API explicitly filters out any blocklisted contacts from GET responses. Suppressed contacts are silently omitted with no indication in the response. When we export contact lists via standard endpoints, blocklisted records are absent. We mitigate this by querying alternative endpoints where available, cross-referencing opt-in status flags on returned records, and requesting a full export snapshot during scoping. Customers with high blocklist volume may have a material gap between the visible contact count and the actual total. We flag this discrepancy in the scoping report and recommend the customer review whether suppressed contacts should be included in the migration or permanently removed from the destination system.

  • Loyalty program rules do not export as data

    Alpine IQ stores loyalty point balances and tier names on the contact record and these migrate accurately to Freshsales custom fields. However, the rules governing point expiration cadence, tier progression thresholds, reward eligibility conditions, and points multipliers per audience are configuration-level settings in Alpine IQ. These rules do not export as data. We export all point balances as numeric values and tier names as text fields, but the customer must manually reconfigure the loyalty program logic in Freshsales using custom fields, Workflows, or a third-party loyalty application. We deliver a written loyalty-program inventory documenting all tiers, earning rates, expiration rules, and reward structures before cutover.

  • Store name matching breaks POS sync if mismatched

    Alpine IQ resolves customer messaging and favorite-store attribution by matching integration source names to store names in the retail store settings. If a store name in Alpine IQ does not exactly match the location name in the connected POS (Dutchie, Cova, Flowhub), the integration fails to sync and loyalty redemption breaks. We extract the full store mapping configuration from Alpine IQ during scoping, validate name alignment across all locations, and flag any mismatches. Mismatches must be corrected in Alpine IQ or POS before contact migration begins or the store-location lookup will resolve incorrectly in Freshsales.

  • Medical ID and compliance fields require Freshsales custom schema

    Alpine IQ stores medical ID numbers, medical ID expiration dates, and state-specific compliance flags directly on the Persona record. Freshsales does not have native fields for these data points. We migrate medical ID to a custom Contact field (med_id__c) and medical expiration to a custom Date field (med_expiration__c). State-specific compliance flags (customer_type, compliance_state) migrate to custom picklist or text fields. The customer must configure these custom fields in Freshsales before migration begins. If the customer is moving out of a regulated industry, these fields may no longer be relevant and can be omitted from the migration scope.

  • Order attribution parameters are single-field strings

    Alpine IQ's attr parameter on orders stores campaign attribution as a single string with embedded UTM-like values (e.g., utm_source=email&utm_campaign=spring_sale). Freshsales Opportunity custom fields are typed and structured. We split the attr string into separate custom fields (attribution_source__c, attribution_campaign__c, attribution_medium__c) during transformation, but the split logic depends on the attr string format used by the customer's Alpine IQ instance. If the attr format is non-standard or inconsistent across orders, some attribution values may be lost or require manual cleanup post-migration.

Migration approach

Six steps for a successful Alpine IQ to Freshsales data migration

  1. Discovery and scope confirmation

    We audit the source Alpine IQ account: Persona count, order volume, audience count, discount group count, loyalty tier structure, custom field inventory, multi-location store count, blocklist volume estimate, and integration source inventory (POS platforms, ecommerce). We confirm whether the customer is moving out of regulated-industry compliance requirements (medical ID, state flags) or retaining them. The discovery output is a written migration scope with object counts, custom field list, store mapping validation checklist, and a loyalty-program inventory template for the customer to complete.

  2. Freshsales schema provisioning

    We create all custom fields in Freshsales before any data migration: loyalty_points__c (Number), loyalty_tier__c (Text), email_opt_in__c (Checkbox), sms_opt_in__c (Checkbox), med_id__c (Text), med_expiration__c (Date), customer_type__c (Text), discount_group__c (Text), attribution_source__c (Text), attribution_campaign__c (Text), attribution_medium__c (Text), store_location__c (Lookup to Account), and audience_multiplier__c (Number). Account records for each store location are created with names matching the Alpine IQ store configuration. We validate that the custom field API names do not conflict with existing Freshsales fields.

  3. Blocklist audit and suppression export

    We request a full export snapshot from Alpine IQ including blocklisted contacts, cross-reference opt-in status flags on returned records, and generate a suppression list distinct from the active contact export. We deliver the suppression list separately so the customer's Freshsales admin can import it as a blocklist in Freshsales or a connected email/SMS tool. This step adds one to two days to the timeline for accounts with high blocklist volume.

  4. Test migration in Freshsales trial or sandbox

    We run a test migration with a representative sample (typically 500-1,000 records) into a Freshsales trial or sandbox environment. The customer's admin spot-checks migrated contacts against Alpine IQ source records, validates point balance accuracy, order deal creation, store location lookups, and opt-in status flags. We correct any field mapping errors and re-run the test until reconciliation passes before production migration begins.

  5. Production migration in dependency order

    We run production migration in this order: Account records (store locations), Contacts (Personas with loyalty points, tier, opt-in flags, custom properties), Deals (Orders split into Opportunity header plus line items), Lists (Audiences populated with contact IDs), and a final delta run for any records modified during the migration window. Each phase emits a row-count reconciliation report. We use Freshsales REST API for contact and deal creation with batch chunking and exponential backoff on rate limit responses.

  6. Cutover, loyalty inventory handoff, and validation

    We freeze Alpine IQ writes during cutover, run a final delta migration, then enable Freshsales as the system of record. We deliver the loyalty-program inventory document listing all point tiers, earning rates, expiration rules, and reward structures for the customer's Freshsales admin to rebuild. We do not rebuild loyalty program logic as Freshsales Workflows inside the migration scope; that is a separate configuration task. We support a three-day hypercare window where we resolve any record-count discrepancies or mapping issues raised during the first business day post-cutover.

Platform deep dives

Context on both ends of the pair

Alpine IQ logo

Alpine IQ

Source

Strengths

  • Purpose-built compliance tooling for regulated industries including cannabis marketing restrictions and SMS carrier rules.
  • Deep bidirectional POS integrations that sync customer records and transaction data without manual reconciliation.
  • Flexible audience segmentation combining purchase frequency, product category, visit recency, and custom behavioral signals.
  • Order attribution tracking with attr parameters enables campaign ROI reporting at the order level.
  • BigQuery integration provides a documented bulk data export path for organizations with data warehouse infrastructure.

Weaknesses

  • Steep learning curve and complex interface delay time-to-value for new users and smaller teams without dedicated ops resources.
  • Reporting and dashboard tooling lacks customization, filtering depth, and suffers from slow load times on large datasets.
  • API rate limits are not publicly documented, creating uncertainty for large-scale migration batch planning.
  • SMS deliverability in cannabis-adjacent markets is constrained by carrier filtering, limiting campaign reach despite opt-in compliance.
  • Blocklist suppression is handled server-side on GET but the full blocklist is not accessible via API, complicating audit completeness.
Freshsales logo

Freshsales

Destination

Strengths

  • Generous free tier for small teams with core CRM functionality without per-seat costs.
  • All-in-one sales CRM with built-in telephony, chat, and email reducing third-party tool dependency.
  • Freddy AI contact scoring and deal predictions available on Pro tier.
  • Multiple pipeline views with Kanban and list options across all plans.

Weaknesses

  • Reports lack depth compared to competitors like HubSpot, with limited customization options.
  • Integration setup is poorly documented with no clear guides for connecting third-party tools.
  • AI features gated behind $39/user/month Pro tier despite marketing emphasis on Freddy AI.
  • Bot sessions limited to 500 one-time allocation with no monthly refresh.

Complexity grading

How hard is this migration?

Standard CRM migration. 2 of 8 objects need a mapping; the rest are 1:1.

B

Overall complexity

Standard migration

Derived from compatibility, mapping clarity, API constraints, and data volume across Alpine IQ and Freshsales.

  • Object compatibility

    B

    2 of 8 objects need a mapping; the rest are 1:1.

  • Field mapping clarity

    C

    Field mapping is derived from defaults — final spec confirmed during the sample migration.

  • Timeline complexity

    B

    8-object category — typical timelines run 2–7 days end-to-end.

  • API constraints

    B

    Alpine IQ: 5 requests per second, 120 per minute, and 2,000 per hour per documented developer guide..

  • Data volume sensitivity

    B

    Alpine IQ doesn't expose a bulk API — REST + parallelization used for high-volume runs.

Estimator

Estimate your Alpine IQ to Freshsales migration cost

Rule-based pricing — no per-record fees, no manual quotes. Migrations over 2M records are scoped individually.

Step 1

What are you migrating?

Pick a category, then your source and destination platforms.

Category

FAQ

Frequently asked questions about Alpine IQ to Freshsales data migrations

Answers to the questions buyers ask most during Alpine IQ to Freshsales migration scoping. Not seeing yours? Book a call.

Can't find your answer?

Walk through your Alpine IQ to Freshsales migration with a real engineer — 30 minutes, free, written quote within 24 hours.

Book a free 30 minute consultation

Straightforward migrations under 15,000 Personas with no multi-location loyalty mapping and clean order history complete in two to four weeks. Migrations with multi-location store mapping, high blocklist volume, loyalty point balances across tier structures, or large order histories (over 50,000 transactions) move to five to eight weeks because of POS store reconciliation, blocklist cross-referencing, and loyalty program inventory work. Alpine IQ persona imports themselves take 24 hours to process per the platform's documentation, which we account for in timeline planning.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Alpine IQ.
Land in Freshsales, intact.

Tell us record counts and timeline. We'll come back with a written quote inside 1 business day — no commitment, no sales pitch.

Accuracy guarantee Rollback included Quote in 1 business day