Introduction
An Ampersand manifest (amp.yaml) is a YAML file that defines how your application integrates with various SaaS platforms through the Ampersand integration platform.
This page provides a comprehensive reference for the schema of this file, including detailed field descriptions and best practices.
OpenAPI spec
The OpenAPI spec for the manifest is available on GitHub.Top-level structure
The Ampersand manifest starts with a top-level structure that specifies the schema version and a list of integrations:Notes
- Only one
specVersionis allowed per manifest file. - The
integrationsarray must contain at least one integration configuration. - Multiple integrations can reference the same provider with different configurations.
Integration definition
Each integration defines a connection to a specific provider (e.g., Salesforce, HubSpot). This section contains the basic metadata about the integration:Naming Conventions
name: Use descriptive, unique names that identify the purpose of the integration. Examples:salesforce-contacts-sync,hubspot-crm-integration,github-issues-tracker.displayName: Use proper capitalization and spacing for better readability in UIs. Examples: “Salesforce Contacts Sync”, “HubSpot CRM Integration”, “GitHub Issues Tracker”.
Subscribe definition
Thesubscribe section defines how to subscribe to real-time create, update, and delete events from the provider. This section is optional - if your integration does not need real-time data, you can omit this section. Learn more in Subscribe Actions.
Subscribe considerations
- Check the specific provider guide to see which providers support subscribe actions. If subscribe actions isn’t supported for a particular provider, you can still use read actions to get updated data every 10 minutes.
- A
readblock must always be defined alongside asubscribeblock. Each subscribed object that usescreateEvent,updateEvent, ordeleteEventmust also have a matching object entry in thereadblock (with the sameobjectName) and setinheritFieldsAndMapping: true. Objects that only useotherEventsdo not need their own entry in thereadblock. - Only one of
requiredWatchFieldsorwatchFieldsAutoshould be provided for update events. - See Subscribe Actions documentation for detailed implementation guidance.
Read definition
Theread section defines what data to read from the provider. This section is optional - if your integration only writes data or uses proxy, you can omit this section. Learn more in Read Actions.
Read considerations
- Check the specific provider guide to see which objects support reading.
- For complex integrations, consider combining read actions with subscribe actions to get both historical data and real-time updates.
- See Read Actions documentation for detailed implementation guidance.
Write definition
Thewrite section defines what data can be written to the provider. This section is optional - if your integration only reads data, subscribes to events, or uses proxy, you can omit this section. Learn more in Write Actions.
Write Considerations
- Check the specific provider guide to see which objects support writing.
- When
inheritMapping: trueis set, field mappings defined in the read definition will also be used for writing, which simplifies definition for bidirectional syncs. - See Write Actions documentation for detailed implementation guidance.
Proxy definition
Theproxy section configures API call proxying. This allows direct access to the provider’s API through Ampersand’s proxy. This section is optional - if your integration does not need to make proxy calls, you can omit this section. Learn more in Proxy Actions.
Object-level definition
Read object
Each object in theobjects array defines a specific data type to read from the provider:
When configuring fields for a read object, keep these points in mind:
- You can combine
requiredFieldsandoptionalFieldsin the same object definition. - For detailed options on configuring individual fields, see the Field Configuration section.
- Learn more about Object and Field Mapping.
Write object
Subscribe Object
Each object in theobjects array defines a specific object type to subscribe to:
Details
Object Name
TheobjectName must match the API object name in the provider’s system. Some common examples:
- Salesforce:
contact,lead,account,opportunity - HubSpot:
contacts,companies,deals,tickets - GitHub:
repos,issues,pulls,users - Intercom:
contacts,companies,conversations,teams
Destination
Thedestination field must match a destination configured in your Ampersand dashboard. Common patterns for naming include:
- Provider-specific webhooks:
salesforceWebhook,hubspotKinesisStream,intercomWebhook - Generic webhooks:
defaultWebhook,dataStream,analyticsWebhook
Learn more in Destinations.
Schedule
Theschedule field uses standard cron syntax with five fields:
*/10 * * * *: Every 10 minutes*/30 * * * *: Every 30 minutes
Scheduling Considerations
- Higher frequency (e.g., every 10 minutes) provides more up-to-date data but increases API usage.
- Lower frequency (e.g., daily) reduces API usage but data may be less current.
- Consider the provider’s API rate limits when setting schedules.
- For less frequently updated data (e.g., user profiles), a lower frequency may be sufficient.
- For rapidly changing data (e.g., chat messages), a higher frequency is recommended.
Backfill
Thebackfill section configures how historical data is loaded.
Learn more about backfill behavior:
Backfill Considerations
- Setting
fullHistory: truemay result in longer initial sync times, especially for large datasets. - Some providers may have API rate limits that affect backfill performance.
- See Read Actions backfill behavior for detailed implementation guidance.
Field
In Read Actions, fields can be configured in two main ways - either using a simplefieldName reference or using a mapped field approach (mapToName, mapToDisplayName, prompt, default). This flexibility allows for both direct field references and more sophisticated field mapping options.
Learn more about Object and Field Mapping and Dynamic Field Mappings.Simple Field Reference For straightforward field access where you directly reference a provider’s field without renaming it:
Learn more about field mapping strategies.
*Either
fieldName or all of mapToName, mapToDisplayName, and prompt are required.
Common Patterns and Best Practices
-
Direct Field Access: Use simple
fieldNamereferences for standard, unchanging fields: -
Standardized Field Names: Use
fieldNamewithmapToNameto standardize field names: -
User-Defined Mapping: Use
mapToNamewithoutfieldNamewhen users need to select the field: -
Combined Approach: For complex integrations, combine these patterns:
Learn more about Object and Field Mapping.
Subscribe action events
In Subscribe Actions, each event type can be configured with specific options: Create event ThecreateEvent definition specifies how to handle create events:
Update event
The
updateEvent definition specifies how to handle update events:
Only one of
watchFieldsAuto or requiredWatchFields should be specified.deleteEvent definition specifies how to handle delete events:
Association change event
The
associationChangeEvent definition specifies how to handle association change events:
Other events
The
otherEvents array allows you to subscribe to non-standard events specific to certain providers:

