Add an activity to a contact
Activities power the contact timeline, trigger workflows, and feed into RFM (recency, frequency, monetary) scoring.
All activities have a spend that is automatically applied to the contacts lifetime value or LTV.
Creating an activity
POST /activities
At minimum, provide the contact ID, activity type, source, and when it happened:
{
"contact": 1042,
"type": "Purchase",
"source": "website",
"happenedAt": "2026-04-07T14:30:00+00:00",
"spend": 4500,
"currencyCode": "GBP"
}The spend field is in the smallest currency unit — 4500 means £45.00 for GBP, or $45.00 for USD.
Activity types
The type field must be one of these values:
Booking
Hotel or venue reservation
Include a booking object (see below)
Checked in
Guest arrives at venue
—
Checked out
Guest departs venue
—
Purchase
Non-Glu purchase or transaction
spend, currencyCode
Shopify order
Order from Shopify
Typically created automatically
Gift card registered
Gift card added to a contact
giftCard Id
Login
Member logged in
—
Connected to wifi
Guest connected to venue wifi
—
Membership started
Contact started a membership
—
Changed tier
Contact moved to a different tier
—
Membership cancelled
Contact cancelled membership
—
Referral invite created
Contact sent a referral
referralInvite (IRI reference)
Referral invite completed
Referral was completed
referralInvite (IRI reference)
Golf reservation
Table reservation
Recording a purchase
For purchases made outside of Glu (in-store POS, external e-commerce, etc.):
The externalReference field is important for deduplication — if you send the same activity type with the same external reference twice, Glu will recognise it as a duplicate rather than creating two entries.
Deduplication
Glu deduplicates activities using two methods:
By
externalReference: If an activity of the same type already exists with the same external reference within the organisation, the existing activity is returned instead of creating a duplicate.By
giftCard: For gift card related activities, if an activity already exists for the same gift card, it won't be duplicated.
Always include an externalReference when syncing activities from external systems to make your integration idempotent.
Retrieving a single activity
GET /activities/{id}
Custom fields
Common integration patterns
Syncing purchases from your POS
Record every in-store transaction to build a complete picture of customer spending:
The contact's totalSpend, lastInteractedAt, and RFM scores update automatically.
Enriching contacts from your CRM
Sync custom attributes from an external CRM or data source:
Hotel PMS integration
Record bookings and check-in/check-out events from your property management system:
Activities and workflows
Activities can trigger workflows. For example, a workflow with a booking_created trigger will automatically run when a Booking activity is created. This lets you build automations like:
Send a welcome email when a booking is recorded
Award loyalty points when a purchase activity is logged
Upgrade a membership tier when spend thresholds are met
You don't need to do anything extra — just create the activity and any matching active workflows will execute.
Tips
Always include
externalReferencewhen syncing from external systems to prevent duplicates on retry.Use
sourceto identify where the activity came from — this helps when debugging and when building workflow conditions.Amounts are always in lowest denomination — pence for GBP, cents for USD/EUR.
Custom field names are case-sensitive — use the exact
fieldNamefrom the custom field definition.Custom field values are validated — the API will return a 422 error if the value doesn't match the field type or isn't in the allowed options for a Select field.
Contact lookup by email — if you don't have the contact ID, use
GET /contacts?emailAddress[]=email@example.comto find it first, or usePOST /contactswhich will create or update by email and return the contact with its ID.
Last updated