Create or update a personSave a person and their attributes in Customer.io - their email, plan, company, anything you want to segment or personalise by later. Customer.io creates the person if it has not seen this identifier before, so there is no separate 'create'. One caveat worth knowing: if the person named above and the email or ID below belong to two different people, Customer.io answers 200 and then records an Attribute Update Failure instead of applying the change - so change one identifier at a time.
Track an eventRecord something a person did, which is how a workflow starts an automation in Customer.io - automations cannot be triggered through the API, they wait for an event, a segment or a date. Only events timestamped within the last 72 hours trigger one. Anything you put in 'Event data' can be used in the message; 'from_address', 'recipient' and 'reply_to' are reserved names that override the automation's own settings.
Delete a personRemove a person and everything Customer.io holds about them. This does not stop them coming back: any later step that writes to the same identifier creates the person again, which is usually what you want, and occasionally a surprise. Use 'Suppress a person' instead when the identifier must never be usable again.
Suppress a personPermanently delete a person and block their identifier. This is not a soft flag: the profile is deleted, and every later API call or import that mentions the identifier is ignored without an error. Use it for a deletion request; use 'Create or update a person' with 'Unsubscribed' turned on for someone who just wants no more email.
Unsuppress a personRelease a suppressed identifier so it can be used again. It does not bring the person back - the profile that was suppressed is gone - it only makes the identifier available to a later 'Create or update a person'.
Add people to a segmentPut people into a manual segment, up to 1000 at a time. Only manual segments are listed, because a data-driven segment's members are decided by its conditions and Customer.io refuses to change them. Everyone in the list has to be the same kind of identifier - Customer.io ignores the ones that are not, without reporting it.
Remove people from a segmentTake people out of a manual segment, up to 1000 at a time. Unlike adding, this needs the people to have an ID attribute: Customer.io cannot remove someone from a manual segment through the API if your workspace identifies people only by email and they have never been given an ID.
Find people by emailLook people up by email address and get their Customer.io ID back. This is the step that turns something a person typed into an identifier the rest of Customer.io can address, and it is worth using even when you already have an ID - a cio_id works whatever your workspace identifies people by. Several profiles can share an email, so the answer is a list.
Get a personRead everything Customer.io holds on one person: their identifiers, every attribute, when each was last changed, their devices, and whether they are unsubscribed. Note that Customer.io returns every attribute as text, including the ones you sent as numbers or true/false.
List a person's segmentsThe segments one person currently belongs to, manual and data-driven alike. Useful as a condition: check whether someone is in 'Churn risk' before doing anything about it.
List a person's activityWhat one person has done and what has happened to them, newest first - events, page views, attribute changes, and every open, click and bounce. Customer.io guarantees the last 30 days. Filter by the kind of activity, and by event or attribute name for the two kinds that have one.
List a person's deliveriesEverything Customer.io has sent one person, newest first, with the metrics on each. Without a date range it returns the last six months. The timestamps say when a delivery was created in Customer.io, which is not always when it went out.
Create a manual segmentMake an empty manual segment - a list you decide the members of, rather than one Customer.io works out from conditions. Add people to it with 'Add people to a segment'. Data-driven segments can only be created in Customer.io itself, because they are their conditions.
List segmentsEvery segment in the workspace with its ID, type and size state. 'type' says whether a segment is manual - the only kind whose membership the API can change.
Count a segment's membersHow many people are in one segment. Cheaper than listing them, and the right way to make a workflow wait for a segment to fill up. Membership changes are not instant, so a count taken immediately after adding people can still be the old one.
List a segment's membersOne page of the people in a segment, as their identifiers. Read from Customer.io's 'identifiers' rather than its parallel 'ids' list, because a member with no ID appears in that one as an empty string and would be lost. Pass the 'next' value back in to page on.
List automationsEvery automation in the workspace - what Customer.io's API still calls a campaign - with its state, what starts it and what it does. Read-only on purpose: automations cannot be started through the API, so the way a workflow sets one off is to track the event or set the attribute it waits for.
List deliveriesOne page of everything Customer.io has sent, newest first, filtered by channel, outcome, automation or date. Each delivery carries a 'metrics' object whose entries mark what happened to it. Without a date range the window is the last six months. Pass the 'next' value back in to page on.