{
  "name": "SMB CRM entry pricing",
  "description": "Verified entry-level pricing for twenty CRM products aimed at small businesses. Each figure was read from the vendor's own pricing page on the date below. A null entry means the vendor publishes no price.",
  "checked": "2026-08-22",
  "license": "https://creativecommons.org/licenses/by/4.0/",
  "source": "https://syncek.com/crm-comparisons",
  "publisher": "Syncek",
  "count": 20,
  "observedOn": [
    "2026-08-09",
    "2026-08-11",
    "2026-08-22",
    "2026-08-23"
  ],
  "changes": [
    {
      "competitor": "attio",
      "from": {
        "amount": 35,
        "currency": "USD",
        "unit": "user",
        "billing": "annual",
        "plan": "Plus"
      },
      "to": {
        "amount": 31,
        "currency": "EUR",
        "unit": "user",
        "billing": "annual",
        "plan": "Plus"
      },
      "observedOn": "2026-08-22",
      "previouslyObservedOn": "2026-08-11",
      "correction": "Not a price change. Attio prices per currency and does not convert, and this row held the USD page (44 monthly / 35 annual) while attio.com/pricing redirects a reader here to /pricing/eur (39 / 31). Rebased onto the figure our readers are actually served."
    },
    {
      "competitor": "googleSheets",
      "from": {
        "amount": 7,
        "currency": "USD",
        "unit": "user",
        "billing": "annual",
        "plan": "Workspace Business Starter"
      },
      "to": {
        "amount": 6.8,
        "currency": "EUR",
        "unit": "user",
        "billing": "annual",
        "plan": "Workspace Business Starter"
      },
      "observedOn": "2026-08-22",
      "previouslyObservedOn": "2026-08-11",
      "correction": "Not a price change. Google Workspace pins currency to the requesting IP, and no control overrides it: the page carries a 230-country Region selector, setting it to United States leaves the prices in EUR, and gl=US&hl=en-US does nothing. The USD 7 recorded here could never be re-read from Europe, so the row is now the EUR 6.80 a reader following the source link is shown."
    },
    {
      "competitor": "zendesk",
      "from": {
        "amount": 19,
        "currency": "EUR",
        "unit": "agent",
        "billing": "annual",
        "plan": "Suite Team"
      },
      "to": {
        "amount": 19,
        "currency": "EUR",
        "unit": "agent",
        "billing": "annual",
        "plan": "Support Team"
      },
      "observedOn": "2026-08-22",
      "previouslyObservedOn": "2026-08-11",
      "correction": "Not a price change. The 19 was recorded against plan 'Suite Team' and it is Support Team's; Suite Team is 55 and Suite Professional is 115. Zendesk changed nothing: the web.archive.org capture of 2026-08-12 shows the same three plans at the same three prices as today, so the label was misread on 2026-08-11."
    },
    {
      "competitor": "oracleCx",
      "from": null,
      "to": {
        "amount": 150,
        "currency": "USD",
        "unit": "user",
        "billing": "monthly",
        "plan": "Fusion Sales Enterprise Cloud Service",
        "minimumSeats": 10
      },
      "observedOn": "2026-08-22",
      "previouslyObservedOn": "2026-08-11",
      "correction": "Not a price change, and not a misreading either: a gap filled. Both earlier observations recorded null because we had not yet found Oracle's price list; the figure was added to the current file on 2026-08-13. The list itself is dated August 6 2026, so the 150 was already published on both earlier dates and Oracle has not moved."
    },
    {
      "competitor": "sugarcrm",
      "from": {
        "amount": 59,
        "currency": "USD",
        "unit": "user",
        "billing": "annual",
        "plan": "Sell",
        "minimumSeats": 15
      },
      "to": {
        "amount": 59,
        "currency": "USD",
        "unit": "user",
        "billing": "annual",
        "plan": "Sell Standard",
        "minimumSeats": 15
      },
      "observedOn": "2026-08-22",
      "previouslyObservedOn": "2026-08-11",
      "correction": "Not a price change. 'Sell' is the product family and the tier is 'Sell Standard'. The figure, the unit and the 15-seat minimum are unchanged."
    },
    {
      "competitor": "zohoCrm",
      "from": {
        "amount": 14,
        "currency": "USD",
        "unit": "user",
        "billing": "annual",
        "plan": "Standard"
      },
      "to": {
        "amount": 14,
        "currency": "EUR",
        "unit": "user",
        "billing": "annual",
        "plan": "Standard"
      },
      "observedOn": "2026-08-22",
      "previouslyObservedOn": "2026-08-11",
      "correction": "Not a price change. The same numeral in the currency Zoho serves a European reader: the row said US$14 and the page here says EUR 14, which understated Zoho to exactly the readers these pages are written for."
    },
    {
      "competitor": "hubspot",
      "from": {
        "amount": 7,
        "currency": "EUR",
        "unit": "user",
        "billing": "annual",
        "plan": "Starter (single hub)"
      },
      "to": {
        "amount": 20,
        "currency": "EUR",
        "unit": "user",
        "billing": "either",
        "plan": "Starter Customer Platform"
      },
      "observedOn": "2026-08-23",
      "previouslyObservedOn": "2026-08-22",
      "correction": "Not a price change, and HubSpot did not move: 20 EUR was its list price on 2026-08-22 too, and this series recorded 7 because the card was misread. The card shows two figures with no strikethrough, and the billing toggle is the control that separates them: ?term=annual renders 'Starts at EUR 7/mo/seat EUR 20/mo/seat' and ?term=monthly renders 'EUR 10/mo/seat EUR 20/mo/seat'. The first figure moves with the toggle and 20 never does, so 20 is list and 7/10 are the promotion the site banner advertises as 'Save up to 65% on Starter ... New customers only'. 65% off 20 is exactly 7. The plan label was wrong for the same reason: /pricing/sales and /pricing/crm carry the SAME card, so it is the Starter Customer Platform, not a single hub."
    }
  ],
  "vendorChanges": [],
  "rows": [
    {
      "vendor": "Google Sheets",
      "comparison": "https://syncek.com/google-sheets-alternative",
      "freePlan": true,
      "freeTierNote": "Sheets is free with a personal Google account",
      "entry": {
        "amount": 6.8,
        "currency": "EUR",
        "unit": "user",
        "billing": "annual",
        "plan": "Workspace Business Starter"
      },
      "source": "https://workspace.google.com/pricing",
      "readOn": "2026-08-22",
      "readWith": "browser",
      "note": "5.60 is an introductory rate; 7 is list. Business Starter and Standard cap at 300 users. GEO-LOCKED, 2026-08-22: workspace.google.com prices to the reader's country with no override we could find (workspace.google.com/us/pricing.html is a 404), so from Spain the page shows Starter at 6.80 EUR and the USD figure recorded here cannot be re-read from this machine at all. RESOLVED 2026-08-22 by taking the other branch of that reasoning: a row that 'cannot be re-read from this machine at all' and needs 'a US exit or a second pair of eyes in the US' is a row nothing in this process can ever verify. Rule 5 says record the currency as published to an EU/Spain visitor, because that is what our readers see, and it is also what the verifier sees. So this row is now the EUR figure a Spanish reader gets when they follow the source link: 6.80 list, 4.76 introductory for new customers on their first 20 users for 12 months. The USD pair was 5.60 / 7. `render` moves to browser for the same reason as Attio: the cached copy the static bucket greps was fetched without the geo redirect, so it is the US page and can never confirm this row."
    },
    {
      "vendor": "Factorial",
      "comparison": "https://syncek.com/factorial-alternative",
      "freePlan": false,
      "freeTierNote": null,
      "entry": {
        "amount": 8,
        "currency": "USD",
        "unit": "user",
        "billing": "unstated"
      },
      "source": "https://factorialhr.com/pricing",
      "readOn": "2026-08-22",
      "readWith": "static",
      "note": "No plan table is published; the page's only CTA is 'Request a tailored quote'. The 8 is a floor, not a purchasable plan. Confirmed by a live browser read 2026-08-22: a Spanish visitor is served the same USD figure, so this row is not affected by the geo-currency defect found in Attio, Zoho and Google Workspace the same day."
    },
    {
      "vendor": "Freshsales",
      "comparison": "https://syncek.com/freshsales-alternative",
      "freePlan": false,
      "freeTierNote": null,
      "entry": {
        "amount": 9,
        "currency": "EUR",
        "unit": "user",
        "billing": "annual",
        "plan": "Growth"
      },
      "source": "https://www.freshworks.com/crm/pricing/",
      "readOn": "2026-08-22",
      "readWith": "browser",
      "note": "No free plan, trial only. The page prints the same figure as $9 to a US visitor and EUR 9 to an EU one. Confirmed by a live browser read 2026-08-22: Growth 9, Pro 39, Enterprise 59, per user/month billed annually."
    },
    {
      "vendor": "Notion",
      "comparison": "https://syncek.com/notion-alternative",
      "freePlan": true,
      "freeTierNote": "Free plan, EUR 0 per member/month. Unlimited blocks for one person, but anyone you add joins as a workspace owner and a second owner caps the whole workspace at 1,000 blocks.",
      "entry": {
        "amount": 9.5,
        "currency": "EUR",
        "unit": "user",
        "billing": "annual",
        "plan": "Plus"
      },
      "source": "https://www.notion.com/pricing",
      "readOn": "2026-08-22",
      "readWith": "browser",
      "note": "Business EUR 19.50. Prices are client-side; the static fetch returns plan names with no figures."
    },
    {
      "vendor": "Pipedrive",
      "comparison": "https://syncek.com/pipedrive-alternative",
      "freePlan": false,
      "freeTierNote": null,
      "entry": {
        "amount": 14,
        "currency": "EUR",
        "unit": "user",
        "billing": "annual",
        "plan": "Lite"
      },
      "source": "https://www.pipedrive.com/en/pricing",
      "readOn": "2026-08-22",
      "readWith": "browser",
      "note": "14-day trial, no free plan. The per-month figure renders as a split node (currency, then digits) which is why static fetches mis-read it as '$2'. Host 403s every automated request; a real browser is required. Read live 2026-08-22: Lite 168, Growth 468, Premium 708, Ultimate 948 per user/year. Figure unchanged; the LOCATOR had drifted, the page now saying 'per user/year' where this row said 'per seat/year'."
    },
    {
      "vendor": "Zoho CRM",
      "comparison": "https://syncek.com/zoho-crm-alternative",
      "freePlan": true,
      "freeTierNote": "Free edition for up to 3 users, EUR 0",
      "entry": {
        "amount": 14,
        "currency": "EUR",
        "unit": "user",
        "billing": "annual",
        "plan": "Standard"
      },
      "source": "https://www.zoho.com/crm/zohocrm-pricing.html",
      "readOn": "2026-08-22",
      "readWith": "browser",
      "note": "Professional 23, Enterprise 40, Ultimate 52, all EUR. CURRENCY CORRECTED 2026-08-22: this row said US$14 because the cached copy was fetched without geo context. The page carries an EUR/GBP selector and serves EUR to a visitor from here, so a reader following the source link sees €14 where the table said $14 - the same numeral in a currency worth more, which understated Zoho to exactly the readers these pages are written for. `render` moves to browser for the same reason as Attio and Google Workspace: the static cache is the US page and can never confirm this row."
    },
    {
      "vendor": "Odoo",
      "comparison": "https://syncek.com/odoo-alternative",
      "freePlan": true,
      "freeTierNote": "One App Free: one app, unlimited users",
      "entry": {
        "amount": 14.9,
        "currency": "EUR",
        "unit": "user",
        "billing": "annual",
        "plan": "Standard"
      },
      "source": "https://www.odoo.com/pricing",
      "readOn": "2026-08-22",
      "readWith": "browser",
      "note": "11,90 EUR is promotional and the page's own footnote says the discount lasts 12 months for initial users, so 14,90 is the price. Custom is 17,90 promo / 22,40 list."
    },
    {
      "vendor": "Holded",
      "comparison": "https://syncek.com/holded-alternative",
      "freePlan": false,
      "freeTierNote": null,
      "entry": {
        "amount": 15,
        "currency": "EUR",
        "unit": "company",
        "billing": "monthly",
        "plan": "Plus"
      },
      "source": "https://www.holded.com/es/precios",
      "readOn": "2026-08-22",
      "readWith": "static",
      "note": "PRICED PER COMPANY, NOT PER SEAT - each plan bundles a user allowance. 7,50 EUR is -50% for 3 months only. Prices exclude VAT."
    },
    {
      "vendor": "Zendesk",
      "comparison": "https://syncek.com/zendesk-alternative",
      "freePlan": false,
      "freeTierNote": null,
      "entry": {
        "amount": 19,
        "currency": "EUR",
        "unit": "agent",
        "billing": "annual",
        "plan": "Support Team"
      },
      "source": "https://www.zendesk.com/pricing/",
      "readOn": "2026-08-22",
      "readWith": "browser",
      "note": "ZENDESK SELL IS NO LONGER NAMED ON THE PRICING PAGE - /sell/pricing/ redirects to /pricing/ and the word 'Sell' does not appear, so this figure is Zendesk's own entry price and not Sell's. /zendesk-alternative keeps Sell as its subject, because Sell is what people search for and it retires 31 August 2027. CORRECTED 2026-08-22: this row said the 19 belongs to SUITE TEAM. It does not. The entry plan is SUPPORT TEAM at 19; Suite Team is 55 and Suite Professional is 115. Zendesk did not change anything - the label was recorded wrongly on 2026-08-11, and the web.archive.org capture of 2026-08-12 shows the same three plans at the same three prices. The claim was published in all four locales as 'the Zendesk entry price here is Suite Team's', understating a competitor's named plan by about 3x on a page whose subject is price. Monthly rate is 25 EUR. Confirmed independently by a live browser read 2026-08-22, the first reading of this row taken from the vendor rather than an archive: Support Team 19, Suite Team 55, Suite Professional 115 per agent/month billed annually. The page geo-redirects an EU visitor to zendesk.es, so those are the euro figures our readers see."
    },
    {
      "vendor": "HubSpot",
      "comparison": "https://syncek.com/hubspot-alternative",
      "freePlan": true,
      "freeTierNote": "Free CRM and free tools, EUR 0, no time limit, and capped at 2 USERS. The 'unlimited free users' the free tier was known for is gone: hubspot.com/pricing/crm states 'Free for up to 2 users. No credit card required.' with no footnote, and the word unlimited appears nowhere on either the pricing or the product page.",
      "entry": {
        "amount": 20,
        "currency": "EUR",
        "unit": "user",
        "billing": "either",
        "plan": "Starter Customer Platform"
      },
      "source": "https://www.hubspot.com/pricing/crm",
      "readOn": "2026-08-23",
      "readWith": "browser",
      "note": "RESOLVED 2026-08-23, and this row was understating HubSpot by 65%. The card shows two figures with no strikethrough, and the billing toggle settles which is which: ?term=annual renders 'Starts at EUR 7/mo/seat EUR 20/mo/seat' and ?term=monthly renders 'EUR 10/mo/seat EUR 20/mo/seat'. THE FIRST FIGURE MOVES WITH THE TOGGLE AND 20 NEVER DOES, so 20 is list and 7/10 are the promotional rates, which the site banner states as 'Save up to 65% on Starter ... New customers only. Select offers available for a limited time' (65% off 20 is exactly 7). Rule 3 takes the list price, as with Odoo's 11,90. Both rival readings are now dead: single-hub-versus-platform fails because /pricing/sales and /pricing/crm carry the SAME card, described as 'Essential marketing, sales, service, content, and data management software', i.e. all five hubs; and annual-versus-monthly fails because that pair is 7 and 10, not 7 and 20. Reproduce by loading the two ?term= URLs and reading the first figure. EUR 20/seat/month buys the full Starter Customer Platform."
    },
    {
      "vendor": "Airtable",
      "comparison": "https://syncek.com/airtable-alternative",
      "freePlan": true,
      "freeTierNote": "Free plan, USD 0. Record and attachment limits apply: past them you keep your data but cannot add more. Airtable does not state the figure on its pricing page.",
      "entry": {
        "amount": 20,
        "currency": "USD",
        "unit": "user",
        "billing": "annual",
        "plan": "Team"
      },
      "source": "https://www.airtable.com/pricing",
      "readOn": "2026-08-22",
      "readWith": "static",
      "note": "USD 24/seat/month billed monthly. Business USD 45 annual / 54 monthly."
    },
    {
      "vendor": "Salesforce",
      "comparison": "https://syncek.com/salesforce-alternative",
      "freePlan": true,
      "freeTierNote": "A 'Free Suite' at USD 0 is listed in the editions comparison table, but no plan card offers it",
      "entry": {
        "amount": 25,
        "currency": "USD",
        "unit": "user",
        "billing": "either",
        "plan": "Starter Suite"
      },
      "source": "https://www.salesforce.com/sales/pricing/",
      "readOn": "2026-08-22",
      "readWith": "static",
      "note": "Starter Suite is the first purchasable plan. Pro 100, Enterprise 175, Unlimited 350, Agentforce 1 Sales 550."
    },
    {
      "vendor": "Insightly",
      "comparison": "https://syncek.com/insightly-alternative",
      "freePlan": false,
      "freeTierNote": null,
      "entry": {
        "amount": 29,
        "currency": "USD",
        "unit": "user",
        "billing": "annual",
        "plan": "Plus"
      },
      "source": "https://www.insightly.com/pricing/",
      "readOn": "2026-08-22",
      "readWith": "static",
      "note": "14-day trial, no free plan. Professional 49, Enterprise 99; all billed annually. Confirmed by a live browser read 2026-08-22: the page states 'All prices USD, billed annually' in the card itself, so USD is correct here and not a geo artefact. /pricing/ redirects to /pricing-plans/?plan=crm."
    },
    {
      "vendor": "Attio",
      "comparison": "https://syncek.com/attio-alternative",
      "freePlan": true,
      "freeTierNote": "Free plan, EUR 0. Up to three seats, Companies and People plus one more standard object, 50k records, 200 email sends per user per month.",
      "entry": {
        "amount": 31,
        "currency": "EUR",
        "unit": "user",
        "billing": "annual",
        "plan": "Plus"
      },
      "source": "https://attio.com/pricing",
      "readOn": "2026-08-22",
      "readWith": "browser",
      "note": "ATTIO PRICES PER CURRENCY, IT DOES NOT CONVERT, and the two pages carry different numbers: the USD page is 44 monthly / 35 annual, the EUR page 39 / 31. This row held the USD pair from 2026-08-09 until 2026-08-22. Rule 5 of the pricing skill is to record what an EU visitor is shown, and https://attio.com/pricing redirects a visitor here to /pricing/eur, so 31 is the figure our readers see when they follow the source link on the comparison pages. Pro is 93 monthly / 74 annual. `render` moved from static to browser at the same time: the cached copy the static bucket greps was fetched without the geo redirect, so it will always be the USD page and can never confirm this row. Read in a real browser 2026-08-22."
    },
    {
      "vendor": "SugarCRM",
      "comparison": "https://syncek.com/sugarcrm-alternative",
      "freePlan": false,
      "freeTierNote": null,
      "entry": {
        "amount": 59,
        "currency": "USD",
        "unit": "user",
        "billing": "annual",
        "plan": "Sell Standard",
        "minimumSeats": 15
      },
      "source": "https://sugarai.com/pricing",
      "readOn": "2026-08-22",
      "readWith": "browser",
      "note": "REBRANDED: sugarcrm.com/pricing/ now redirects to sugarai.com/pricing and the vendor trades as 'SugarAI (formerly SugarCRM)'. The 15-seat minimum puts the real floor at USD 885/month."
    },
    {
      "vendor": "Microsoft Dynamics 365",
      "comparison": "https://syncek.com/dynamics-365-alternative",
      "freePlan": false,
      "freeTierNote": null,
      "entry": {
        "amount": 65,
        "currency": "USD",
        "unit": "user",
        "billing": "annual",
        "plan": "Sales Professional"
      },
      "source": "https://www.microsoft.com/en-us/dynamics-365/products/sales/pricing",
      "readOn": "2026-08-22",
      "readWith": "browser",
      "note": "Sales Enterprise 105, Sales Premium 150. Client-side rendering; the static fetch returns no figures at all."
    },
    {
      "vendor": "Oracle CX Sales",
      "comparison": "https://syncek.com/oracle-cx-alternative",
      "freePlan": false,
      "freeTierNote": null,
      "entry": {
        "amount": 150,
        "currency": "USD",
        "unit": "user",
        "billing": "monthly",
        "plan": "Fusion Sales Enterprise Cloud Service",
        "minimumSeats": 10
      },
      "source": "https://www.oracle.com/a/ocom/docs/corporate/pricing/oracle-fusion-cloud-global-price-list.pdf",
      "readOn": "2026-08-22",
      "readWith": "pdf",
      "note": "Read by eye from Oracle's own Fusion Cloud Service Global Price List (PDF, dated August 6 2026), page 13, under Oracle Sales Bases. CONFIRMED 2026-08-22: same PDF, same edition (the file still prints August 6 2026 on page 1), Oracle Fusion Sales Enterprise Cloud Service still 150.00 monthly, Hosted Named User, minimum 10, under the heading 'Prices in USA (Dollar)'. This row is the one that is legitimately USD: the price list is a single global document quoted in dollars, not a geo-served page. $150/user/month with a 10-user minimum, so the real floor is $1,500/month. `render` is `pdf` because the figure lives in a PDF whose text extraction scrambles the column order, so it cannot be re-checked automatically the way an HTML locator can. The $25 line on the same page is Sales and Service Limited, an OPTION rather than a base, and is not the entry price for the CRM. G2 lists this product at $65/user/month; Oracle's own document says $150, which is why the vendor's page is the source and an aggregator is not."
    },
    {
      "vendor": "Sage",
      "comparison": "https://syncek.com/sage-alternative",
      "freePlan": false,
      "freeTierNote": null,
      "entry": null,
      "source": null,
      "readOn": "2026-08-22",
      "readWith": "none",
      "note": "Sage CRM publishes no price list; it is sold through partners. CONFIRMED 2026-08-22 in a real browser on sage.com/en-gb/products/sage-crm/: no figure of any kind, no pricing section at all, partners named. Quote-only is the answer, not a gap, and for a small business it is often the decisive one."
    },
    {
      "vendor": "SAP CRM",
      "comparison": "https://syncek.com/sap-crm-alternative",
      "freePlan": false,
      "freeTierNote": null,
      "entry": null,
      "source": "https://www.sap.com/products/crm/pricing.html",
      "readOn": "2026-08-22",
      "readWith": "none",
      "note": "Quote only. SAP does publish a page titled 'CRM Pricing and Packages', which is why the record now cites one, but it carries no figure of any kind - packages and a contact route only. Read 2026-08-11. CONFIRMED 2026-08-22 in a real browser: the page still carries zero currency tokens anywhere in its body."
    },
    {
      "vendor": "Adobe Experience Cloud",
      "comparison": "https://syncek.com/adobe-experience-alternative",
      "freePlan": false,
      "freeTierNote": null,
      "entry": null,
      "source": "https://business.adobe.com/products/marketo/pricing.html",
      "readOn": "2026-08-22",
      "readWith": "none",
      "note": "Quote only. The Marketo Engage pricing page names four tiers - Growth, Select, Prime, Ultimate - and prices none of them. Read 2026-08-22 in a real browser: the four tiers are still named and still unpriced, zero currency tokens in the body."
    }
  ]
}