Skip to main content
BackedHelp Centre

CRM and data warehouse feeds

Keep a CRM or data warehouse in step with your applicants and Applications through the API, with one credential per integration and no connector to install.

Last updated

A CRM, such as Salesforce, or a data warehouse can copy your organisation's applicants and Applications from Backed through the API. Backed offers no CRM, Salesforce or data warehouse connector. Any tool or script that can make HTTPS requests reads the same documented API: it asks for a token, then reads each list page by page.

The API is pull-only. Your integration asks, and Backed answers with the records as they stand at that moment. Nothing is pushed to the other system, so it is only as current as its last sync.

Before you start

  • Create one API credential per integration under Settings > Profile and terms, on the API Access tab, as API access explains. Name each for the system that uses it, such as CRM Sync or Warehouse. Read is enough; a feed never writes.
  • Keep each credential's Client ID and Client Secret to hand. The secret is shown once.
  • Know your organisation's address: the one your team signs in at, such as https://your-subdomain.backed.giving. Always use its https:// form. A request over plain HTTP is refused, and no token is issued for it.

Steps

  1. Ask for a token with the credential's Client ID and Client Secret:

    POST /oauth/token
    grant_type=client_credentials&client_id=<Client ID>&client_secret=<Client Secret>
    

    The answer's access_token goes in each request's Authorization: Bearer <access_token> header. A token lasts five days. When a call answers 401 Unauthorized, ask for a new token and carry on.

  2. Read the applicants, 50 at a time, oldest first by id:

    GET /api/v2/registration_entities?limit=50
    GET /api/v2/registration_entities?limit=50&gt=<last id>
    

    Ask for each next page with gt set to the last id you received, until a page comes back empty ([]).

  3. Read the Applications the same way:

    GET /api/v2/funding_applications?limit=50
    GET /api/v2/funding_applications?limit=50&gt=<last id>
    
  4. Load the records into your CRM or warehouse, matched on id. An Application's registration_entity tells you which applicant it belongs to.

For an applicant's members, read GET /api/v2/registration_entities/:id. For an Application's answers, read GET /api/v2/funding_applications/:id. Each is one call per record.

What the feed holds

The feed only ever holds your own organisation's records: every applicant organisation or person, and every Application whatever its state.

A deleted record simply stops appearing. There is no record of the deletion in the feed, so a warehouse finds deletions by comparing a full read with the one before. Paging with gt from the last id you stored picks up only new records; to catch changed records, read each list again from the start.

One credential per integration

Give each system its own credential. Each may make 120 calls a minute, so a heavy warehouse load does not slow your CRM sync, and the API access list shows when each was last used.

When a system is retired or its secret may have leaked, delete its credential on the API Access tab. Its token stops working on its next request, and it cannot get another. Deleting one credential does not affect any other. The other integrations keep reading with the tokens they already hold.

See also

This page uses Backed's default terms, such as Funding Round and Application Template. An organisation may rename them, so read each as your organisation's own term if you've renamed it.