How to Create a Vendor Compliance Comparison Page for SaaS Integrations
Compare Merge.dev alternatives on compliance, pricing, and data retention. Build a vendor comparison page with ZDR architecture to unblock enterprise procurement.
Your account executive just pinged you on Slack at 11pm on a Thursday. A six-figure enterprise deal is stalled in procurement. The buyer's InfoSec team opened the vendor risk assessment (VRA), scrutinized your sub-processor list, and flagged the third-party integration platform you use to sync customer data. The buyer wants to know exactly where their data lives, who has access to it, and whether your integration vendor will sign a Business Associate Agreement (BAA).
If your answer is a generic link to your integration vendor's SOC 2 compliance badge, you have already lost momentum, and you are likely going to lose the deal.
Enterprise security teams do not care about marketing pages. When they evaluate B2B SaaS products, they actively hunt for architectural liabilities. If your integration infrastructure caches, stores, or queues customer payload data on shared third-party servers, you have just introduced an unmanaged sub-processor into their compliance footprint.
To survive this scrutiny and unblock procurement, product managers and engineering leaders must proactively document their integration architecture. You need a public, defensible vendor compliance comparison page that lets InfoSec teams compare integration platforms across SOC 2 Type II, HIPAA BAA, data persistence, and sub-processor footprint in under five minutes. This is the page your sales team will drop into deal rooms to bypass the procurement bottleneck entirely.
This guide breaks down exactly how to structure that comparison page, which columns actually matter, the architectural realities of enterprise integration compliance, and how to position Zero Data Retention (ZDR) to win the deal.
The Enterprise Procurement Wall: Why Compliance Kills Integration Deals
Moving upmarket exposes SaaS companies to a completely different class of security scrutiny. The tools that helped you ship integrations quickly in the SMB space—embedded iPaaS platforms, visual workflow builders, and stateful unified APIs—will actively disqualify you in the enterprise segment. As we've covered in our guide on which integration tools are best for enterprise compliance, the financial stakes of getting security wrong have never been higher.
According to the IBM Cost of a Data Breach 2024 report, the average global breach cost has reached USD 4.88 million, with US costs exceeding $10 million. For the 14th year in a row, healthcare participants saw the costliest breaches across industries with average breach costs reaching $9.77 million. That number is what your buyer's Chief Information Security Officer (CISO) is doing back-of-the-envelope math against when they review your sub-processor list.
Enterprise buyers are hyper-cautious, and they know exactly where the vulnerabilities lie. Recent data from Cymulate shows that 41% of companies suffering a major security incident attribute it to a third-party cause.
The scale of vendor sprawl makes this worse. SOC 2 Type II reports are a baseline requirement for business-critical applications, with 78% of enterprises now requiring them, up from 42% in 2020. And as enterprises manage 371 applications from 280+ vendors, systematic assessment becomes an operational necessity rather than an optional best practice. When you are vendor 281 on that list, you do not get the benefit of the doubt.
Because of this risk, vendor security reviews have become a major bottleneck in the B2B SaaS sales cycle. Data from Lucid indicates the average enterprise vendor security review takes 17 days to complete. Every day a deal sits in InfoSec is a day it risks dying. Third-Party Risk Management (TPRM) platforms like Panorays actively scan for shadow IT and sub-processor sprawl. If your application relies on a third-party integration platform to sync data between your SaaS and their internal systems, that vendor becomes a sub-processor. This is why many engineering teams realize they need an integration tool that doesn't store customer data.
If an InfoSec analyst has to open your integration vendor's website and hunt for whether they store payload data, you have already lost. The comparison page exists to answer that question in one screenful.
Key Criteria for Your Vendor Compliance Comparison Page
Your vendor compliance comparison page should not be a fluffy marketing asset. Skip the marketing fluff like "enterprise-grade" or "bank-level encryption"—InfoSec teams ignore it. It must be a highly technical, objective matrix that your sales engineers can hand directly to a CISO.
The core goal of this page is to differentiate your architecture from competitors who rely on legacy "sync and store" integration platforms.
Structure your comparison matrix around these non-negotiable criteria. A good comparison page renders this as a static HTML table (crawlable for SEO), with footnotes linking to the original audit reports, sub-processor lists, and Data Processing Addendums (DPAs).
| Criterion | What It Answers | Why It Matters |
|---|---|---|
| SOC 2 Type II (current report) | Issued within last 12 months? Observation period? | Baseline. No report, no deal in regulated industries. |
| HIPAA BAA (signed, no upcharge) | Will the vendor sign a Business Associate Agreement? | Mandatory if PHI ever touches the integration pipe. |
| Data Persistence | Does the vendor write customer payload to disk? For how long? | Determines whether vendor is a heavy or light sub-processor. |
| Sub-processor Footprint | Cloud providers, regions, downstream vendors used. | Each one expands the buyer's compliance surface area. |
| Data Residency | EU, US, APAC region pinning available? | GDPR, Schrems II, and country-specific finance rules. |
| Encryption | TLS 1.2+ in transit, AES-256 at rest, BYOK/CMEK? | Table stakes, but specifics matter. |
| Audit Logs | Are tenant-level access logs exposed to the customer? | Required for the buyer's own SOC 2 evidence. |
| Penetration Test Cadence | Annual third-party pentest with summary report? | InfoSec will ask for the latest letter. |
| Incident Notification SLA | Hours to notify on confirmed breach? | Typically 24-72 hours; spelled out in MSA. |
| Deletion / Right to Erasure | Hard delete on request, with confirmation? | GDPR Article 17, CCPA. |
Deep Dive: The "Big Four" InfoSec Questions
Beneath your table, you must explicitly expand on the four most critical rows that trigger VRA rejections:
1. Data Persistence and Caching The InfoSec Question: "Does your integration middleware store, cache, or replicate our payload data at rest?" This is the most critical element of your comparison. Most integration platforms persist data to disk to facilitate visual workflow debugging, automatic retries, or to build a normalized database of third-party records. Your comparison page must clearly state whether your integration layer writes payload data to persistent storage. Add a row to your comparison page titled "Stores customer payload data at rest" with possible values: Yes (always), Yes (configurable TTL), Optional cache, No. That single row will close more deals than your entire feature matrix.
2. Sub-Processor Status The InfoSec Question: "Do we need to add your integration vendor to our approved sub-processor list?" Enterprise buyers hate adding sub-processors. Every new sub-processor requires a risk assessment. If your integration vendor acts as a pure pass-through proxy—routing data in memory without storing it—you can often argue they are part of the network transit layer rather than a data sub-processor.
3. HIPAA and BAA Readiness The InfoSec Question: "If we pass Protected Health Information (PHI) through your integrations, will your vendor sign a Business Associate Agreement?" If an integration platform processes PHI, it must sign a BAA. According to compliance experts, HIPAA regulations require a BAA for any third-party vendor handling PHI. Many legacy integration tools refuse to sign BAAs because their shared-database architectures make HIPAA compliance nearly impossible. Your comparison matrix must definitively state BAA support.
4. SOC 2 Type II Scope The InfoSec Question: "Does your vendor's SOC 2 report cover the specific infrastructure processing our data?" A SOC 2 badge on a website is meaningless if the audit scope excludes the actual data processing pipeline. Your comparison page should link to your trust center and clarify that the integration layer is fully covered under your SOC 2 Type II continuous monitoring.
How to Write the Row Labels
Use the language enterprise procurement actually uses. Map directly to common questionnaires (SIG Core, CAIQ, HECVAT). For example:
- Instead of "Data Privacy", use "GDPR Art. 28 Processor Obligations".
- Instead of "Compliance", split into "SOC 2 Type II" and "ISO 27001" and "HIPAA".
- Instead of "Security", split into "Encryption at Rest", "Encryption in Transit", and "Key Management".
If your page row labels match the SIG Core question text verbatim, the analyst can copy-paste your answer straight into their tool. That is how you compress a multi-week review into a few days.
The Hidden Trap of Data Persistence and Caching
To understand why enterprise buyers care so deeply about data persistence, you have to understand how most integration tools are built.
The standard approach for embedded iPaaS and traditional unified APIs is the "sync and store" model. When a customer connects their Salesforce account to your app, the integration vendor quietly polls Salesforce, normalizes the data, and writes it to a managed database (like Postgres or MongoDB) hosted on their own infrastructure. Your app then queries the integration vendor's database.
This architecture is a massive compliance liability for B2B SaaS companies. The second any payload data is written to a vendor's persistent storage, three things happen:
- The vendor becomes a heavy sub-processor with its own breach risk surface.
- If PHI passes through, a Business Associate Agreement is legally required under HIPAA.
- The buyer's Data Processing Inventory has to be updated, triggering DPIAs and legal review.
Managing BAAs at scale is its own operational tax. Compliance teams now use dedicated platforms (Hyperproof, Vanta, Drata) just to track which vendors have signed, which are due for renewal, and which have access to PHI. Adding another heavy sub-processor to that list is not a casual decision.
flowchart LR
A[Your SaaS App] -->|Push/Pull| B[Integration Vendor]
B -->|Cache + Sync| C[(Vendor Database)]
B -->|API Call| D[Third-Party SaaS]
C -.->|Breach Risk| E[Customer Data Exposure]
style C fill:#ffcccc
style E fill:#ff6666The risk-amplifying box in red is the one InfoSec teams circle on your architecture diagram. The modern enterprise typically uses 80+ SaaS applications on average in operational tooling alone, and each cached copy of customer data multiplies the blast radius of any single vendor compromise.
If your integration vendor's marketing site emphasizes "data sync", "historical caching", or "data warehouse", they are by definition a heavy sub-processor. That is a fact about their architecture, not a marketing problem they can fix with a trust center page.
How Zero Data Retention (ZDR) Bypasses the BAA Bottleneck
The most effective way to pass an enterprise security review is to prove that you simply do not have the data they are worried about. The architectural alternative is Zero Data Retention (ZDR).
Zero Data Retention means the integration infrastructure acts purely as a stateless, pass-through proxy. It receives the API request, normalizes the payload in-memory, forwards it to the destination, and immediately drops the payload from memory once the HTTP response completes. No customer record sits in the vendor's database overnight. If a court subpoenas the vendor, there is nothing to hand over.
Payload data is never written to persistent storage. No databases. No durable queues. No log files containing PII.
This matters for three reasons:
- BAAs become simpler: With no PHI at rest, the vendor's exposure is limited to in-transit handling. Some buyers will waive the BAA requirement entirely; others will sign a much narrower agreement.
- Sub-processor classification drops: A pass-through proxy is closer to a network hop than a data store. Your InfoSec team can argue it is more like a CDN than a database.
- Compliance reuse: Your existing SOC 2 boundary often already covers the integration platform's behavior, because no new data resting place was introduced.
When you build your integration layer on a ZDR platform like Truto, the compliance conversation changes entirely.
graph TD
subgraph Legacy Sync and Store
A[Third-Party SaaS API] -->|Extract| B[(Integration Vendor DB)]
B -->|Cached Payload| C[Your Application]
style B fill:#ffcccc,stroke:#ff0000
end
subgraph Zero Data Retention Proxy
D[Third-Party SaaS API] -->|Raw Payload| E{In-Memory Normalization}
E -->|Normalized Payload| F[Your Application]
style E fill:#ccffcc,stroke:#00cc00
endWhat a pass-through proxy actually looks like
Here is the contrast in code. A sync-and-store call against a cached unified API looks like this:
GET /unified/crm/contacts/12345
Host: api.your-integration-vendor.com
Authorization: Bearer <token>
# Server reads from its OWN database, populated by background syncsVersus a pass-through proxy that hits the upstream provider in real time:
GET /unified/crm/contacts/12345
Host: api.truto.one
Authorization: Bearer <token>
# Server makes a live call to Salesforce, transforms the response
# in memory, returns it, and forgets it.The second pattern is what survives a strict VRA. The platform holds OAuth tokens and integration metadata (which it must, to call the upstream API on your behalf), but not the records themselves. For a deeper walkthrough of the pattern, see our breakdown of what zero data retention means for SaaS integrations.
Handling Rate Limits and Errors Without Storing Data
When you advocate for a Zero Data Retention architecture on your compliance page, technically savvy buyers will immediately raise an architectural objection: "If your integration layer is truly stateless and doesn't queue data, how do you handle API rate limits and upstream errors?"
This is a highly valid question. Legacy integration platforms justify their heavy databases by claiming they need to store payloads to automatically retry failed requests when a third-party API returns a 429 Too Many Requests error.
The correct architectural approach is to push state management back to the edges where it belongs. You need a sane error contract. The integration proxy should not attempt to absorb, throttle, or queue rate limit errors. Instead, it must normalize the rate limit information and pass it back to the caller.
When an upstream provider (like Zendesk or Shopify) returns an HTTP 429 error, a stateless integration platform passes that 429 directly back to your application. However, because every SaaS provider formats their rate limit headers differently, the platform normalizes these headers into standard IETF specifications before returning the response:
ratelimit-limit: The maximum number of requests permitted.ratelimit-remaining: The number of requests remaining in the current window.ratelimit-reset: The time at which the rate limit window resets.
A reasonable client implementation to handle this looks like this:
async function callWithBackoff(url: string, opts: RequestInit, maxAttempts = 5) {
for (let attempt = 1; attempt <= maxAttempts; attempt++) {
const res = await fetch(url, opts);
// If successful or a non-rate-limit error, return immediately
if (res.status !== 429) return res;
// Extract normalized IETF headers provided by the stateless proxy
const resetTime = res.headers.get('ratelimit-reset');
const resetMs = resetTime ? (parseInt(resetTime, 10) * 1000) - Date.now() : 1000;
// Add jitter to prevent thundering herd
const jitter = Math.random() * 250;
const delayMs = Math.max(resetMs, 2 ** attempt * 500) + jitter;
console.warn(`Rate limit exceeded. Initiating exponential backoff for ${delayMs}ms.`);
await new Promise(r => setTimeout(r, delayMs));
}
throw new Error('Rate limit retries exhausted');
}This keeps the integration platform stateless and the caller in control of retry semantics. From a compliance angle, it is also superior: a vendor that queues your requests in its own infrastructure is, by definition, holding your data—even briefly—in persistent state. A vendor that returns the 429 and forgets the request is not. For more detail on cross-API patterns, see our guide on API rate limits and retries across multiple third-party APIs.
The Honest Trade-offs of Pass-Through Architectures
A comparison page that only lists wins reads like marketing. Be transparent about the trade-offs of the pass-through model, because the InfoSec team will find them anyway:
- Higher latency on bulk pulls: A live call to Salesforce is slower than reading from a local cache. For analytics use cases, pair the platform with your own warehouse rather than expecting the integration vendor to be a database.
- Rate-limit exposure is yours: You see the upstream 429s directly. Good for compliance, but you have to implement backoff.
- No "historical replay" out of the box: If you need point-in-time snapshots, you store them yourself, in your own boundary.
These trade-offs are usually acceptable to enterprise buyers because they collapse the compliance surface area. They are not acceptable to teams trying to use the integration platform as a free data warehouse.
Merge.dev Alternatives: Unified API Platform Comparison for B2B SaaS
To fill your compliance comparison page with real data, you need to evaluate the actual B2B SaaS integration platforms on the market. If you are shopping for Merge.dev alternatives - or if your current unified API competitor is the reason procurement flagged your VRA - here is how the leading platforms compare on the dimensions that matter to InfoSec and finance.
| Merge.dev | Apideck | Unified.to | Nango | Truto | |
|---|---|---|---|---|---|
| Pricing model | Per linked account | Per consumer | Usage-based (API calls) | Usage-based; free self-hosted tier | Per integration (flat) |
| Entry price | $650/mo (10 accts), +$65/acct | $599/mo (25 consumers) | $750/mo (750K calls) | Free tier; paid plans scale with requests | Sales-driven |
| Cost scales with | Customer count × connectors | Customer count | API call volume | API call volume or self-hosted | Integrations enabled (not customer count) |
| Data architecture | Sync-and-store (cached) | Real-time pass-through | Real-time pass-through | Configurable | Real-time pass-through (ZDR) |
| Payload data at rest | Yes (default); streaming add-on available | No | No | Depends on deployment | No |
| Custom field support | Passthrough API; common models fixed | Proxy API for unmapped fields | Fixed unified schema | Full code-level control | 3-level override hierarchy |
| Best fit | Broad HRIS/ATS, cached data OK | Marketplace UI, multi-connector customers | 27+ categories, AI/MCP use cases | Code-first teams, self-hosting | Enterprise compliance, flat scaling |
Key distinctions when reading this table:
Merge stores both end-user data and end-user credentials by default. If you prefer Merge not store any customer data, Merge Destinations offers a streaming-only option, but it is a premium add-on. This is the architectural fact that triggers sub-processor classification and BAA requirements.
Apideck's consumer-based model decouples connection count from cost - you pay based on how many of your customers use integrations, not how many integrations each customer uses. That is meaningfully better than per-linked-account pricing when customers connect multiple systems.
Truto charges per integration, not per connection. Whether you have 10 customers or 10,000, your bill stays the same. This is the only model where your integration costs actually decrease per customer as you grow.
The "Payload data at rest" row is the one your InfoSec analyst will circle. Apideck's architecture includes "no data storage / no caching of payloads", so every call is real-time, directly to the source systems. Truto is a real-time pass-through unified API platform with a zero-storage architecture where API calls fetch the upstream system in real time. Both architectures avoid the compliance overhead of storing customer records.
At-a-Glance Comparison: Storage, Mapping, Deployment, Pricing
If you are shortlisting Merge alternatives specifically because Merge feels expensive and rigid, the five dimensions below are the ones that actually separate the field. This is the compressed view your architecture reviewer wants before reading anything else, and it directly answers the question of which Merge alternative offers no data storage plus a schema mapping model you can bend to your product.
| Vendor | Data storage behavior | Mapping model | Custom objects & per-tenant overrides | Deployment options | Pricing model |
|---|---|---|---|---|---|
| Merge.dev | Cached by default; streaming-only add-on available | Fixed common models + dashboard/API field mapping | Custom objects for select CRMs (Salesforce, HubSpot, Zendesk Sell); per-linked-account field mappings on common models | Managed cloud, multi-region (US, EU, APAC) | Per linked account |
| Apideck | Real-time pass-through, no payload cache | Fixed unified schema + Proxy API for unmapped fields | Passthrough for provider-specific fields; no declarative override layer | Managed cloud; BYO OAuth apps | Per consumer |
| Unified.to | Real-time pass-through, no payload cache | Fixed unified schema + raw passthrough | Passthrough for provider-specific fields; limited native custom object modelling | Managed cloud; BYO OAuth apps | Usage-based (API calls) |
| Nango | Sync records held in a managed cache (transient sync buffer, not a primary datastore); self-hosted lets you control persistence | Code-first (TypeScript sync/action scripts on their runtime) | Full code-level control per integration and per customer | Managed cloud or self-hosted; BYO OAuth apps | Free tier + usage-based paid plans |
| Truto | Real-time pass-through, zero data retention on payloads | Declarative JSONata mappings stored as configuration data | Custom objects and 3-level override hierarchy (platform → environment → account) with no code deploy | Managed cloud, on-prem, BYO OAuth apps | Per integration (flat) |
The interesting cells for "no storage + custom mapping" cluster on the right side of the table. Apideck and Unified.to satisfy the no-storage requirement but push everything non-standard through a raw passthrough that your application has to interpret. Nango gives you code-first control but keeps a records cache in the managed offering, so you either accept the cache or run it yourself. Truto keeps payloads out of persistent storage entirely and expresses mappings as data that can be overridden per environment and per connected account.
How to Use This Table: Choosing for Custom Schema Mapping + No Storage
The two requirements in the query - custom schema mapping and no customer data at rest - eliminate most of the field quickly if you apply them in order.
- Cross out anything that caches payloads by default. Merge fails this filter on its standard plans; the streaming-only add-on is a separate SKU, so verify whether every endpoint you need is covered before treating it as a ZDR vendor. On Nango's managed cloud, sync records sit in a records cache that acts as a transient sync buffer, so self-hosting is the honest answer if zero retention is a hard requirement.
- Cross out fixed-schema vendors if custom objects are the norm, not the exception. Apideck and Unified.to give you a solid unified model with a passthrough escape hatch. That works when 95% of your integration surface is standard contacts, deals, and tickets. It breaks down when every enterprise customer arrives with three custom objects and a bespoke field on
Account. - Decide whether you want code-first or declarative mapping. Nango is TypeScript scripts you author and deploy. You get total control and total responsibility - versioning, testing, and shipping every mapping change through their pipeline. Truto's declarative JSONata mappings are stored as data and can be overridden per environment or per connected account without a deploy or a code review.
- Check per-tenant override support explicitly. "Custom mapping" is not just "add a field to the unified model once for everyone". Enterprise customers want their own field names, their own conditional logic, and their own custom objects surfaced under the unified shape. Ask each vendor to demo overriding one field for one customer without touching source code.
- Confirm deployment fits your compliance boundary. If regulated data forces on-prem or VPC deployment, the shortlist narrows to Nango self-hosted or Truto on-prem. Everyone else is managed cloud only.
Applying that filter to the phrase "Merge alternatives with no data storage and better schema mapping" leaves two credible answers: Nango if you want code-first and are willing to self-host to get true zero storage, and Truto if you want declarative mappings with per-tenant overrides and zero retention out of the box. Apideck and Unified.to are strong picks if you can live with a fixed unified schema plus passthrough.
Example: Mapping a Custom Salesforce Object Across Vendors
A concrete scenario makes the differences obvious. Your enterprise customer runs Salesforce with a custom object Contract__c that has custom fields Renewal_Terms__c, MRR__c, and a relationship lookup Signed_By__r.Name. You want to expose this to your app under a unified shape:
{
"contract_id": "a0X5f00000ABCDE",
"renewal_terms": "Net 30, auto-renewing annually",
"mrr": 1200,
"signed_by": "Jane Doe"
}Here is how the same requirement plays out on each vendor.
Merge.dev. Custom objects are supported for Salesforce, HubSpot, and Zendesk Sell through a dedicated custom objects API. You configure the mapping through the Merge dashboard or field mapping API, and Merge holds it per linked account. The tradeoff is that the standard Salesforce data still flows through Merge's sync pipeline into their store, so the custom object avoids the cache only if you specifically route it through the passthrough endpoint rather than the unified path.
Apideck. No custom object modelling. You hit /vault/proxy/salesforce/sobjects/Contract__c through the Proxy API, get the raw Salesforce payload back, and normalize it inside your application. No storage on the vendor side, but every customer with a slightly different custom object shape becomes another code path in your codebase.
Unified.to. Same pattern as Apideck: use the raw passthrough endpoint, transform in your application. The unified schema does not extend to arbitrary custom objects, and per-customer variations end up as if branches in your own code.
Nango. Write a TypeScript sync or action script that queries Contract__c via SOQL, transforms it, and returns the unified shape. This runs on Nango's managed compute (or your self-hosted instance). You own the code, the tests, and the deploy pipeline. If customer A wants Renewal_Terms__c renamed to terms while customer B wants it split into terms and renewal_frequency, you branch on connection metadata inside the script.
Truto. Add a JSONata response mapping for Contract__c that produces the unified shape, stored as configuration data on the integration. For a customer with a different field name or an extra field, add an account-level override that deep-merges on top of the base mapping. No code deploy, no fork, no separate script per tenant. The same generic execution path that handles standard Contact records handles the custom object.
The pattern is stark. Apideck and Unified.to leave you writing and maintaining application-side transformation code for every custom shape. Merge handles the custom object through its unified API but still caches the standard Salesforce data by default. Nango pushes the code into their runtime instead of yours, which is a real improvement over rolling your own but still code you own. Truto is the only option in this shortlist where the custom object mapping is data, per-tenant overridable, and runs through the same pass-through path as standard objects with no payload retention.
Quick Decision Checklist for Product + Security Teams
Run each shortlisted vendor through this list before signing anything. If a candidate collects more than two "no" answers in the storage or mapping blocks, it is not a real alternative on the dimensions the original question is asking about.
Storage and compliance:
- Confirmed in writing that no customer payload data is written to persistent storage on the default plan (not a premium add-on tier).
- SOC 2 Type II report scope covers the actual execution path, not only the marketing website.
- BAA available at your current pricing tier if you touch PHI.
- Sub-processor list is short enough that adding this vendor does not blow up your DPA with existing customers.
- Data residency options match your contractual commitments (EU-only, US-only, region pinning).
Mapping model:
- Custom fields on standard objects can be added without a code deploy on the vendor's side.
- Custom objects (not just custom fields) are supported through the unified path or a declarative mapping layer.
- Per-tenant mapping overrides exist as a first-class concept, not as "fork the script per customer".
- Reverse mapping (unified writes to native fields) works symmetrically with reads.
- Mapping changes are versioned and auditable.
Deployment:
- Managed cloud, on-prem, or VPC options match your data residency and network isolation requirements.
- You can bring your own OAuth apps for connectors where branding, marketplace listing, or rate-limit isolation matters.
- The tool exposes a webhook-first path (signed, retried, observable) for real-time events, not just poll-based sync.
Pricing:
- Pricing model does not scale linearly with your customer count if integrations are a default feature of your product.
- No hidden per-endpoint, per-webhook, or per-record fees that surface only at scale.
- Contract length and volume commitments are compatible with your growth model and your finance team's appetite.
Operational fit:
- Webhook delivery is signed, retried, and observable end-to-end.
- Rate-limit headers are normalized so your existing backoff code works without vendor-specific branches.
- Migration off the vendor is realistic (OAuth token portability, config export, no lock-in beyond the auth layer itself).
- The vendor has a documented incident notification SLA that your MSA can reference.
If a vendor clears this checklist without asterisks, they are a real Merge alternative for a team that wants better schema mapping and no customer data at rest. If they cannot clear the storage block or the mapping block, they are the wrong shortlist entry, no matter how good their marketing site looks.
Compliance Matrix: GDPR, HIPAA, and Data Residency Across Platforms
This is the table your InfoSec team will screenshot and paste into the VRA. Each row maps to a standard questionnaire item. Verify all claims against each vendor's current trust center before publishing - certifications change.
| Merge.dev | Apideck | Unified.to | Nango | Truto | |
|---|---|---|---|---|---|
| SOC 2 Type II | ✅ | ✅ | ✅ | Managed cloud only | ✅ |
| ISO 27001 | ✅ | ✅ | ❌ | Verify current status | ✅ |
| HIPAA BAA | ✅ | ✅ | Scale tier and above | Verify current status | ✅ |
| GDPR DPA | ✅ | ✅ | ✅ | ✅ | ✅ |
| Data residency options | US, EU (Stockholm), APAC | EU | Verify | Self-hosted anywhere | Configurable |
| Customer payload at rest | Yes (default) | No | No | Configurable | No |
| Sub-processor weight | Heavy (stores data) | Light (pass-through) | Light (pass-through) | Depends on config | Light (pass-through) |
Merge adheres to industry-standard compliance frameworks, including SOC 2 Type II, ISO 27001, HIPAA, GDPR, and CCPA. On paper, that is a strong compliance profile. The catch is architectural: customer data and credentials are stored indefinitely, until actively deleted by the Merge customer. Merge offers customers control over where their data is stored. If the customer selects the EU multi-tenant environment, data will only be stored in the EU in Stockholm.
Unified.to is SOC 2 Type II certified and positions as compliant with HIPAA, GDPR, CCPA/CPRA, and PIPEDA, but does not currently hold ISO 27001. HIPAA BAAs are gated to the Scale tier and above.
Truto is SOC 2 Type II and ISO 27001 certified, and explicitly positions as compliant with HIPAA, GDPR, and CCPA. Combined with its pass-through architecture, this means the compliance footprint is limited to OAuth tokens and integration metadata - not customer payload data.
When publishing your compliance matrix, link every ✅ to a verifiable artifact: the vendor's trust center, their SOC 2 report request form, or their DPA download page. Unsupported checkmarks will be challenged.
Cost Modeling: 100 Customers × 3 Connectors
The comparison page needs to answer a finance question too: "What does this integration layer actually cost us at scale?" Here is a worked example using published pricing for a common scenario - 100 customers, each connecting CRM, HRIS, and a ticketing system (3 connectors per customer).
Per-linked-account model (Merge.dev)
Merge charges $65 per linked account per month. Each customer connection counts separately: if one customer connects three integrations, you pay three times.
- 100 customers × 3 connectors = 300 linked accounts
- Subtracting the 10 included in the base tier, you are paying for 290 additional connections at $65 each. That is $18,850 per month, or over $226,000 annually.
- At 500 customers with the same pattern: ~$1.17M/year
Per-consumer model (Apideck)
Apideck's consumer-based pricing charges based on active connected consumers. Launch plans start at $599/mo for 25 consumers, Scale plans from $1,299/mo for 100 consumers.
- 100 customers = 100 consumers (regardless of connectors per customer)
- Scale plan: ~$1,299/mo = ~$15,588/year
- At 500 customers: Enterprise pricing applies (contact sales)
Per-integration model (Truto)
Truto charges per integration, not per connection. Whether you have 10 customers or 10,000, your bill stays the same.
- 3 integrations (CRM, HRIS, Ticketing) = flat annual fee
- At 100 customers: same cost as at 10
- At 500 customers: still the same cost
The 24-month projection
Plug your actual growth numbers into each model. The formula is simple:
Per-linked-account annual cost = (customers × avg_connectors - included_accounts) × per_account_rate × 12
Per-consumer annual cost = consumer_tier_rate × 12
Per-integration annual cost = num_integrations × per_integration_rate
The per-linked-account model is the only one where your integration bill scales in direct proportion to your sales success. If integrations are a core product feature used by most customers, that creates a cost curve that tracks your revenue uncomfortably closely. Per-integration pricing is the only model where the cost per customer actually drops as you grow.
Include a simplified version of this math on your compliance comparison page. Finance teams reviewing the VRA alongside procurement will flag total cost of ownership, and showing the 24-month trajectory helps your champion justify the vendor switch internally.
Migration Checklist: Switching from a Sync-and-Store Platform
If your current integration vendor is the compliance liability blocking deals, switching platforms is an engineering project with real operational risk. Here is a practical checklist for migrating off a sync-and-store unified API to a pass-through architecture.
1. OAuth Token Inventory and Re-Auth Plan
When customers authenticate through a sync-and-store platform, that platform holds the OAuth tokens. Switching vendors means asking every customer to re-authenticate - a migration tax that creates real lock-in.
- Inventory all active connections. Export your current linked account list with provider, customer, and connection status.
- Confirm token portability. In most cases, OAuth tokens are non-transferable between vendors. Plan for full re-authorization.
- Design the re-auth UX. Surface a one-time reconnection prompt in your app. Make it frictionless: pre-fill the provider, explain why in one sentence, and track completion rates.
- Phase the rollout. Start with your 10 most engaged customers. Fix UX friction before rolling to the full base.
2. Customer Communication Template
Send this before triggering any re-auth prompts:
Subject: Upgrading our integration security - brief action needed
We are upgrading our integration infrastructure to a zero-data-retention architecture. This means your data will no longer be stored by a third-party integration vendor - it flows directly between [Your App] and [Provider] in real time.
What you need to do: Reconnect your [Provider] account in [Your App] → Settings → Integrations. It takes about 30 seconds.
Why: This change removes a third-party sub-processor from your compliance footprint and ensures your data is never cached outside your own systems.
3. Engineering Tasks
- Swap the SDK. Replace the old vendor's client library with the new platform's SDK. If both expose a unified API shape (e.g.,
/crm/contacts), the schema migration may be minimal. - Switch from cached reads to direct reads. Your application may assume instant responses from a local cache. Direct API calls have upstream latency (200-800ms typical). Audit your UI for loading states.
- Implement rate limit handling. A pass-through proxy returns upstream 429 errors instead of absorbing them. Add the exponential backoff pattern from the rate limit section above.
- Update webhook consumers. If you relied on the old vendor's webhook normalization, map the new vendor's event format to your existing handlers.
- Remove sync-interval dependencies. If your app polls the old vendor's cached database on a cron schedule, replace that with on-demand API calls or the new platform's webhook pipeline.
4. Validate and Cutover
- Run both platforms in parallel for one billing cycle with a test cohort.
- Compare data freshness, error rates, and latency between the two paths.
- Once the new path is stable, deprecate the old vendor and confirm deletion of all stored data per their DPA.
Budget two to four weeks of engineering time for the migration itself, plus two weeks for the phased customer re-auth rollout. The total calendar time depends on how many customers need to reconnect and your re-auth completion rate.
Choosing a Unified API for LLM Function Calling and Agent Tools
The compliance framing above is one axis. Teams building AI agents have a second, equally important axis: which unified API best exposes third-party actions as LLM tools? "Best unified API for giving LLMs tools or function-calling capabilities" is now a common shortlist question in 2026, and the answer depends on how the platform models its integration surface.
Why vendor comparisons matter for LLM tool-calling
An agent that can query Salesforce, create a Zendesk ticket, and update a HubSpot contact needs three things from its integration layer: a tool schema the model can reason about, a stateless execution path that does not cache PII, and enough connector breadth to avoid one-off glue code. Most unified API platforms were built for background sync jobs, not real-time agent loops. That mismatch is why the vendor choice matters more than it looks. A cached unified API can still power a copilot, but it forces you to accept a heavy sub-processor and stale data on every tool call.
Selection criteria for LLM tool-calling unified APIs
- Tool schema quality. The platform should expose every supported action as a typed tool description with input/output schemas that plug directly into frameworks like LangChain, LlamaIndex, or the OpenAI/Anthropic tool-calling formats. If you have to hand-write JSON schema for every endpoint, you have a proxy, not a tool layer.
- Method-level filtering. Agents often need read-only or scoped tool sets. Look for a tools endpoint that lets you filter by method type (read, write, custom) so a support agent does not accidentally get delete permissions.
- Latency. Agent loops are latency-multiplied: five tool calls at 600ms is a three-second turn. A pass-through proxy that adds only a normalization hop is materially faster than a platform that routes through a sync database.
- Deployment model. Managed cloud is fastest to ship. Self-hosted or VPC-deployed matters for regulated data and for pinning egress IPs.
- Security posture. Zero data retention is table stakes for agent workflows because the model's context often contains sensitive customer identifiers. Every cached payload widens the blast radius of a prompt-injection or key-leak incident.
- Connector breadth. Agents get more useful as their action surface widens. Count categories (CRM, ticketing, HRIS, storage, messaging) and per-category depth (Salesforce plus HubSpot plus Pipedrive, not just Salesforce).
- Cost model. Per-call pricing punishes chatty agents. Per-integration or per-consumer pricing is more predictable when a single user turn triggers five to twenty tool invocations.
Side-by-side summary for LLM tool use cases
| Managed proxy (ZDR) | Sync-and-store unified API | Code-first / self-hosted | Direct REST wrappers | |
|---|---|---|---|---|
| Tool schema out of the box | ✅ | Partial | ⚠️ Build yourself | ❌ |
| Zero retention for agent context | ✅ | ❌ | Configurable | Depends |
| Latency profile | Upstream + normalization | Cache read, but stale | Depends on deployment | Upstream only |
| Connector breadth | High | High | Medium | Low |
| Setup time | Hours | Hours | Days to weeks | Weeks |
How this maps to the pass-through proxy architecture
The proxy architecture described earlier is the reason a ZDR unified API works well as an LLM tool layer. Each resource on an integration - contacts, tickets, members - already has typed methods (list, get, create, update, custom actions) with input schemas the platform uses to validate calls. The same schemas can be surfaced as tool descriptions, and the same execution path a human-triggered API call takes is the one the agent uses. There is no separate "agent runtime" to secure, and no cached snapshot for the model to accidentally exfiltrate. When you filter tools by method type, you get least-privilege agents by construction.
Concretely, a tools endpoint on the integration platform can return something like this for an agent framework to consume:
{
"name": "hubspot_contacts_list",
"description": "List contacts from the connected HubSpot account.",
"parameters": {
"type": "object",
"properties": {
"limit": { "type": "integer", "default": 50 },
"updated_after": { "type": "string", "format": "date-time" }
}
}
}The agent framework binds each tool to the platform's execution endpoint. The model picks a tool, the platform proxies the call to the upstream provider, normalizes the response in memory, returns it, and forgets it. Truto exposes exactly this shape through its tools endpoint with native LangChain support, and lets you filter the returned tool set by method type so you can hand a read-only agent a strictly read-only surface.
Recommended picks by scenario
- Fastest MVP (single-developer prototype): A managed unified API with a native LangChain or MCP toolset. Skip self-hosted. You want to be calling
tools = client.get_tools()on day one, not writing OAuth flows. - Mid-market SaaS adding an AI copilot: A managed pass-through proxy with per-integration pricing. Predictable cost when the copilot fans out to many tool calls per turn, and no sub-processor drama when the same copilot serves enterprise buyers.
- Regulated enterprise (healthcare, finance, public sector): A ZDR platform with a signed BAA, SOC 2 Type II, ISO 27001, and configurable data residency. Verify the SOC 2 scope covers the tool execution path, not just the marketing website.
- On-prem or VPC-only deployment: A code-first or self-hostable option is unavoidable. Accept the operational burden of running the connectors yourself in exchange for network-level isolation.
- Low-latency real-time agent: Managed pass-through in the same region as your app and your primary upstream providers. Avoid platforms that add a sync-database read on the hot path.
Recommended default for most teams in 2026: a managed, pass-through unified API with zero data retention, native LangChain/MCP tool exports, and per-integration pricing. This combination minimizes latency, keeps agent context out of a third-party database, and keeps cost decoupled from agent chattiness. Truto fits this profile - its tools endpoint returns the full set of resource methods as typed LLM tools, with filtering by method type so you can scope read-only agents cleanly.
Evaluation checklist for LLM tool-calling vendors
Before signing, put every candidate through this list:
- Does the platform expose a single endpoint that returns tools for a connected account with descriptions and JSON schemas?
- Can you filter tools by method type (read, write, custom) at request time?
- Is the tool execution path pass-through, or does it read from a cached database?
- Does the SOC 2 Type II report cover the tool execution path explicitly?
- Will the vendor sign a BAA at your current tier (not a higher one)?
- What is the p50 and p95 added latency vs. a direct upstream call?
- Does pricing scale with agent tool-call volume, customer count, or integrations enabled? Model each against your projected agent traffic.
- Is there an official adapter for your agent framework (LangChain, LlamaIndex, MCP), or do you have to build it?
Run one real agent workload end-to-end during the trial, not a synthetic benchmark. The differences between platforms surface fastest under a five-to-ten-tool turn against production data.
Structuring the Final Document (Concrete Template)
When compiling this information into a public-facing URL or a downloadable PDF for your sales team, use this structure verbatim. It captures featured snippets for queries like "unified API HIPAA BAA" and "integration platform zero data retention".
- H1: " [Your Vendor] vs [Competitor A] vs [Competitor B]: Compliance Comparison".
- Executive Summary: State clearly that your integration architecture is designed for enterprise compliance and strict data isolation.
- TL;DR Table: The 10-row matrix comparing your ZDR architecture against legacy sync-and-store platforms right at the top.
- Architecture Diagram: Include the mermaid diagram showing the in-memory pass-through flow and where data lives at rest (or does not).
- Audit Artifacts Section: Ungated links to your SOC 2 report request, ISO certificate, pentest summary, sub-processor list, DPA, and BAA template.
- SIG Core / CAIQ Pre-filled Answers: A downloadable file, ungated.
- Security FAQs: Pre-answer the frequently raised InfoSec objections regarding sub-processors, BAAs, and data persistence.
- Customer Proof: One or two named enterprise customers in regulated industries (with permission).
Keep the page text under 1500 words, the table above the fold, and link every claim to a verifiable artifact. Documentation that passes enterprise vendor security assessment scrutiny has several characteristics: It's specific, not generic. "We encrypt sensitive data" is not a policy. "All customer data is encrypted at rest using AES-256, with encryption keys managed through AWS KMS with automatic rotation every 90 days" is a policy. Be that specific.
Next Steps to Get the Page Live This Quarter
A realistic two-week plan to execute this strategy:
- Week 1, Days 1-2: Pull your current sub-processor list, SOC 2 report scope, and BAA template. Confirm whether your integration vendor is named and what obligations they trigger.
- Week 1, Days 3-5: Build the comparison matrix. For competitors, use only public sources (their trust centers, their pricing page BAA mentions, their CAIQ).
- Week 2, Days 1-3: Draft the page. Run it past your CISO or vCISO for accuracy. Strip every adjective that does not map to an audit artifact.
- Week 2, Days 4-5: Publish, then send the URL to the three sales reps with the largest stuck deals. Track which deals advance within 14 days.
For the broader procurement playbook, see our guide on passing enterprise security reviews with third-party API aggregators and our on-prem deployment and compliance guide.
By taking control of the narrative and exposing the hidden risks of standard integration tools, you transform compliance from a sales blocker into a competitive advantage. The goal of this page is not to win an argument with a competitor's marketing team. It is to give an exhausted InfoSec analyst at 4pm on a Friday enough verifiable detail to write "Approved" on your vendor row and move on with their day.
FAQ
- What are the best alternatives to Merge.dev for B2B SaaS integrations?
- The main Merge.dev alternatives for B2B SaaS integrations are Apideck (consumer-based pricing, real-time pass-through), Unified.to (usage-based pricing, 27+ categories), Nango (open-source, code-first), and Truto (per-integration flat pricing, zero data retention). The best choice depends on your compliance requirements, pricing sensitivity at scale, and whether you need sync-and-store or real-time pass-through architecture.
- Do I need to re-authenticate all customers if I switch from Merge.dev?
- In most cases, yes. When customers authenticate through Merge, Merge holds the OAuth tokens. Migrating to a new integration platform means each customer will need to re-authorize through the new vendor's auth flow. Plan for a phased rollout with clear customer communication to minimize friction.
- How much does Merge.dev cost at 100 customers with 3 integrations each?
- With 100 customers each connecting 3 integrations (300 linked accounts), Merge's published pricing works out to approximately $19,500 per month or $226,000 annually. Per-integration pricing models like Truto's keep costs flat regardless of customer count, while Apideck's consumer-based model charges per customer rather than per connection.
- Which unified API platforms do not store customer data?
- Apideck, Unified.to, and Truto use real-time pass-through architectures that do not persist customer payload data at rest. Nango's architecture is configurable depending on deployment. Merge uses sync-and-store by default but offers a premium Destinations add-on for streaming data without storage on Merge's infrastructure.
- What is Zero Data Retention and why does it matter for enterprise compliance?
- Zero Data Retention (ZDR) means the integration platform acts as a stateless pass-through proxy - it normalizes API payloads in memory and drops them once the HTTP response completes. No customer records are written to the vendor's persistent storage. This matters because it reduces the vendor's sub-processor classification from heavy to light, simplifies HIPAA BAA requirements, and shrinks the buyer's compliance surface area.