Skip to main content
The Create Contact endpoint lets you create a contact in Amplemarket from your own data. Use it when you have a person — at minimum an email address — that you want to bring into Amplemarket and use in downstream flows, such as processing it through Workflows. Example flow:
  1. You have a person’s details (at least an email address)
  2. You call POST /contacts with those details
  3. Amplemarket creates the contact, optionally associating it to an account and an owner
  4. You receive the created contact in the 201 response and can use it in downstream flows, for example running it through Workflows

Create Contact Endpoint

This endpoint creates a single contact per request. For specific API details, please refer to the API specification.
This endpoint does not enrich the contact. Only the data you send in the payload is used. If you need to gather more information first, refer to the People Search guide; to check an email before creating a contact, see the Email Verification guide.

Request format

The request body is a single JSON object describing the contact.
The only required field is email, and it must be unique within your account: if a contact with the same email already exists, the request returns a 409 Conflict instead of creating a duplicate. All other fields are optional, and every field except phone_numbers must be a String.

Associating the contact to an account

You can associate the new contact to an existing account using one of four fields. They are evaluated in the following priority order, and only the first one present is used — the others are ignored:
  1. account_id — matched against the account’s public ID
  2. crm_account_id — matched against the linked CRM account identifier
  3. company_domain — matched against the account’s domain
  4. company_name — matched against the account’s name
If the field you provide matches no account, or matches more than one, the request fails with a 400. If you omit all four fields, the contact is created without an account association.

Assigning an owner

Use owner_email to assign the contact to a specific user. The email must match an active user in your Amplemarket account; otherwise the request fails with a 400. If you omit owner_email, the contact is created without an owner.
The owner_email you provide must match an active user in your Amplemarket account — it is not an arbitrary email address.

Phone numbers

phone_numbers is an array of objects. Each object supports:
Each phone number is validated. If an entry has no number, or the number cannot be recognized as a valid phone number, the whole request fails with a 400 (missing_field or invalid_parameter) and the contact is not created. Send numbers in a valid, parseable format (ideally E.164, e.g. +12127365000).

CRM behavior

If your account has an active CRM integration set up to push contacts, this endpoint always attempts to create a new contact in your CRM. It never links to, or imports, an existing CRM record.
If the CRM push fails, the contact is not created — the request returns a 422 and nothing is persisted. Fix the CRM-side issue and retry.

Request example

Response format

There are a few potential outcomes:
  • The contact is created. The response will have status 201 Created and the body is the created contact:
  • The request is malformed — for example, email is missing, or a field has the wrong type. The response will have status 400, following the standard error format.
  • A contact with the same email already exists. The response will have status 409 with the conflict error code.
  • The request was well-formed but could not be completed — most commonly a CRM push failure. The response will have status 422.

Common errors and pitfalls

  • Missing or non-string fields: every field except phone_numbers must be a String. Sending null, a number, or an object for a text field returns a 400 with a pointer to the offending field.
  • Account association that matches nothing (or too much): account_id, crm_account_id, company_domain, and company_name must each resolve to exactly one account. If you are getting 400s here, confirm the value and remember that only the highest-priority field you send is used.
  • Unknown owner: owner_email must be an active user in your account.
  • Invalid phone numbers: every phone_numbers entry must include a number in a valid, parseable format. A missing or unrecognizable number returns a 400 and the contact is not created.
  • Duplicate emails: creating the same email twice returns 409, not a second contact.
  • CRM push failure: if your account pushes contacts to a CRM, a CRM-side failure blocks creation with a 422. In that configuration this endpoint behaves like a create-or-nothing operation, not a best-effort create.