Documentation Index
Fetch the complete documentation index at: https://www.plain.com/docs/llms.txt
Use this file to discover all available pages before exploring further.
Using TypeScript? Check out our GraphQL SDK for a fully typed client.
A customer event will be created in all threads that belong to the provided customer ID. If you
want an event to appear in a specific thread use a thread
event.
To create an event you need a customer ID.
You can get this by upserting a customer in Plain, from data in webhooks or other API calls you made. If you want to test this, press ⌘ + K on any thread and then “Copy customer ID” to get an ID you can experiment with.
In this example we’ll be creating the following event:
For this you’ll need an API key with the following permissions:
mutation createCustomerEvent($input: CreateCustomerEventInput!) {
createCustomerEvent(input: $input) {
customerEvent {
id
title
createdAt {
iso8601
unixTimestamp
}
}
error {
message
type
code
fields {
field
message
type
}
}
}
}
{
"input": {
"title": "API key generated",
"customerIdentifier": {
// You can use the email:
"email": "jane@acme.com"
// ...or if you set external id on customers:
// externalId: 'YOUR_ID',
// ...or you can use the customer's id in Plain:
// customerId: 'c_123'
},
"components": [
{
"componentText": {
"text": "New API key was added with the fingerprint **3b7896975ee9fd15eeb7** with 4 associated roles."
}
},
{
"componentSpacer": {
"spacerSize": "M"
}
},
{
"componentLinkButton": {
"linkButtonLabel": "View in admin",
"linkButtonUrl": "https://admin.your-app.com"
}
}
],
// Optional - if provided, this will ensure that this event can only
// be created once and fail on the second time. This external id acts
// as an idempotency key while also letting you correlate an event to
// something your systems.
"externalId": "XXX",
// Optional - if provided then the event will only be shown
// in a single thread vs all threads from a customer
"threadId": "th_01HB924RWAW8H3Q8KZDFWYBJHZ"
}
}