Protocol
Our Revenue Cloud migration engine, designed from the ground up by the team behind 20+ CPQ conversions. AI suggests and builds products and business rules as part of the migration itself.
Spreadsheet In, Transactions Out
Protocol plugs into the Revenue Cloud APIs and migrates legacy transactions in as quotes or orders. Ramp deals are the differentiator: we worked out the sequence of API calls required to bring in multi-year ramps, and most paid migration tools on the market do not support them. We think it is the most complete Revenue Cloud migration platform available, and that is a claim we will defend on a call.
Need the team, not just the toolWhat Protocol Actually Does
Spreadsheet-Native Migration
Protocol reads a standard Excel workbook of up to four sheets: Quote, Quote Line Item, Quote Line Item Attribute, and Quote Line Relationship. Row 1 holds a column header, either a Salesforce API name or one of Protocol's own linking columns, and row 2 onward is your data.
Reference ID Linking
Records link across sheets with reference IDs you define yourself, not live Salesforce IDs. Reference Id ties a quote row to its Quote Reference on the line item sheet, and QuoteLineReferenceId ties a line item to its QuoteLineItemId on the attribute sheet, so the workbook holds together before anything reaches Salesforce.
Multi-Year Ramped Deals
Add a GroupId and an IsRamped column to the line item sheet and Protocol runs the ramp sequence on its own: it creates the first segment, enables ramping, clones the remaining segments, and patches each one with that segment's quantities and dates, sorted and processed by start date.
Bundles and Attributes
Parent and child products migrate as flat rows on the line item sheet, linked through a Quote Line Relationship sheet that sets bundle pricing and quantity scaling. A separate attribute sheet carries picklist, text, and number values onto any line item, including every segment of a ramped deal.
Preview Before You Run
Uploading a workbook does not migrate it. Protocol parses the file, shows the field mappings it detected against your org, and flags validation errors and warnings so you can fix them or adjust a mapping before a single record is created.
Parallel Execution, Chained Actions
Quotes or orders run at a configurable concurrency of 1, 3, 5, or 10 at a time, with a separate batch size for Opportunity updates. Each quote can optionally chain into Set as Syncing Quote, Create Order from Quote, and Activate Orders.
Implementation customers get free access and a perpetual license.
Questions We Actually Get
How does Protocol migrate quotes to Salesforce Revenue Cloud?
Protocol reads an Excel workbook and writes into Revenue Cloud through the standard Salesforce APIs, with no other integration layer involved. A Quote sheet and a Quote Line Item sheet are the minimum needed, and Quote Line Item Attribute and Quote Line Relationship sheets carry attribute configuration and bundle structure when your legacy quotes need them.
How do I map spreadsheet rows to Revenue Cloud records?
Row 1 of each sheet holds either a Salesforce API name, which sends that column straight to the matching field, or one of Protocol's reference columns, such as Reference Id, Quote Reference, QuoteLineReferenceId, or QuoteLineItemId, which link rows across sheets without needing real Salesforce IDs yet. After you upload the workbook, Protocol shows the mappings it detected and lets you review or change them before anything runs.
Can I migrate multi-year ramped deals into Revenue Cloud?
Yes. Add a GroupId column to mark each ramp segment and an IsRamped column set to true on one line item per quote, and Protocol creates the first segment, turns on ramping, clones the remaining segments, and patches each one with that segment's quantities and dates automatically.
Do I need Salesforce record IDs before I start a migration?
Only for values that point at records already in your org, such as Product2Id, PricebookEntryId, and AttributeDefinitionId, which you query from Salesforce ahead of time. Reference Id, Quote Reference, QuoteLineReferenceId, and QuoteLineItemId are not Salesforce IDs. You choose those yourself, and Protocol uses them only to link rows within the workbook.
How does Protocol handle product bundles?
Parent and child products go in as ordinary rows on the Quote Line Item sheet, and a Quote Line Relationship sheet defines which lines are children of which parent. That relationship sheet also sets whether a child's price is included in the bundle price and whether its quantity scales proportionally or stays constant, and Salesforce populates ParentQuoteLineItemId on the child rows automatically.
What is the difference between one-time and recurring products in a migration file?
One-time products, like setup fees, omit StartDate, EndDate, PeriodBoundary, and BillingFrequency entirely. Recurring products, sold on a TermDefined or Evergreen selling model, require BillingFrequency, and leaving it blank on a recurring line is one of the most common validation errors.
What happens after migration? Does Protocol create orders too?
Order creation is optional and configured per quote. You can turn on Set as Syncing Quote, which updates Opportunity.SyncedQuoteId and reprices the quote, Create Order from Quote as a single order or split by group or by field, and Activate Orders, which sets the order status to Activated. Activation generates Assets only if your org already has a flow that creates them from an activated order.
Can I run more than one quote or order migration at a time?
Yes. Concurrency is configurable at 1, 3, 5, or 10 quotes or orders running in parallel, and when your workbook includes Opportunity rows, a separate batch size setting controls how many Opportunity updates run together.