How do I map revenue data onto Attio custom objects?
Attio has no built-in Deal, Opportunity, or Quote object — Loopfour's integration only exposes generic Object and Record actions keyed by an arbitrary objectType. Before mapping revenue data, define a custom object (with whatever attributes represent deal value, term length, and billing frequency) in Attio's workspace, then reference it by its object slug, not by an assumed standard name.
Part of the finance integrations guide.
| Built-in revenue object | None — no Deal, Opportunity, or Quote object exists by default |
|---|---|
| What Loopfour can do | Generic listObjects/getObject/getRecord/createRecord actions keyed by objectType |
| Prerequisite | The custom object and its attributes must exist in Attio before a workflow can read or write to it |
| Contrast | Salesforce (Opportunity) and HubSpot (Quote+LineItem) both ship with a fixed revenue-relevant object |
Why there's no standard object to map onto
Attio's own object reference documentation confirms the platform's model is attribute- and object-based, with system-defined attributes on standard objects but user-defined objects and attributes layered on top — there is no fixed Deal, Opportunity, or Quote object shipped by default the way Salesforce or HubSpot provide. Loopfour's Attio integration reflects this structurally: its executor exposes only generic listObjects, getObject, getRecord, createRecord, and updateRecord actions, all keyed by an objectType parameter, rather than dedicated deal-object actions.
Setting up the mapping
Define a custom object in Attio's workspace — commonly named something like "Deals" or "Contracts" — with attributes for the fields a revenue-recognition schedule needs: contract or deal value, term length, start date, and a recurring-vs-one-time classification. Note the object's slug and each attribute's slug, since Loopfour's generic actions reference objects and records by those identifiers, not by a fixed schema Loopfour already knows about. Because this is fully custom, the exact attribute set — and therefore what a revenue schedule can read from it — is defined by whoever set up the Attio workspace, not by the integration.
Next step
Map the finance workflow with the most exposure and prove the automation path.
Bring the invoice, contract, payment reconciliation, or customer finance workflow you have to defend at audit. Loopfour can map the trigger, controls, integrations, and approval loop.
Field mapping
Minimum custom-object attributes for a revenue-recognition mapping
| Attribute | Feeds into |
|---|---|
| Contract/deal value | Total revenue to recognize |
| Term length / start date | Schedule period boundaries |
| Recurring vs. one-time flag | Schedule type (ratable vs. point-in-time) |
Frequently Asked Questions
Sources
Related
Topic
Revenue Recognition
Revenue recognition determines when — not just how much — revenue hits the books. Under ASC 606 (US GAAP) and its international counterpart IFRS 15, revenue is recorded as a company satisfies its perf…
Read moreTopic
Integrations
Every finance automation vendor publishes an integrations page: a grid of logos, a claim of "seamless" connectivity, and not much else. That page answers a marketing question — does this vendor touch…
Read moreHow-to
How do I connect HubSpot quotes for revenue recognition?
HubSpot's Quote object carries line items with quantity, price, and amount, plus a recurringbillingfrequency property that classifies each line as recurring or one-time. Read line items via the quotes API, require recurringbillingfrequency before treating a quote as rev-rec-ready, and subscribe to quote webhooks so schedule creation reacts to quotes in real time.
Read moreHow-to
How do I map Attio custom attributes for AR remittance addresses?
Attio's Company object has no built-in street, city, state, zip, or country fields — Loopfour's integration can only write domains and customAttributes. Before syncing AR remittance addresses, define a location-type custom attribute in Attio's workspace, then map to it by attribute slug rather than assuming a fixed field name, since the attribute has to be created before any data can land in it.
Read more