Skip to main content
POST
Create a customer

Authorizations

Authorization
string
header
default:your_token_here
required

Restaurant-scoped partner API token passed as Authorization: Bearer <token>.

Body

application/json

Customer creation payload. Existing customers are matched first (see on_match), so a call replayed after it succeeded finds the customer it created.

name
string
required
Required string length: 1 - 200
email
string<email> | null
phone_number
string | null

E.164 (+33612345678) recommended. A national number is read with the restaurant's country.

Required string length: 3 - 40
lang
enum<string>

Defaults to the restaurant's language.

Available options:
FR,
EN,
IT,
ES,
DE,
PT
external_id
string | null

Partner-side identifier of the customer.

Required string length: 1 - 255
tags
string[]

Replaces all the customer's tags.

Maximum array length: 100
Required string length: 1 - 100
note
string | null

Internal staff note.

Maximum string length: 10000
custom_fields
object

Custom field values keyed by field id (see GET /api/partner/v1/customer-fields). Only the given fields change; null clears one. The value must fit the field type: TEXT → string, NUMBER → number within min/max, DATE → YYYY-MM-DD, BOOLEAN → boolean, SELECT → one option value, MULTI_SELECT → an array of distinct option values (at most max_items).

Newsletter consent. false withdraws it; channel opt-outs (marketing_opt_outs) are managed by EatNow.

on_match
enum<string>
default:return_existing

What to do when the provided details match an existing customer of the restaurant (same external_id, then same phone number, then same email): return_existing keeps the existing customer untouched and uses it; update writes the provided fields onto the existing customer; create_new skips matching and creates another customer anyway.

Available options:
return_existing,
update,
create_new

Response

Existing customer returned (result: matched) or updated (result: updated)

data
object
required
result
enum<string>
required

created: a new customer (HTTP 201). matched: an existing customer, left untouched (HTTP 200). updated: an existing customer, updated with the provided fields (HTTP 200).

Available options:
created,
matched,
updated