Zapier
Zapier connects apps without code: something happens in one app (a trigger) and Zapier does something in another (an action). Grondia has a Zapier app, so a campground can react to a new booking, a payment or a check-in with a message, a spreadsheet row or a task in the tool it already uses.
This page is for two readers: a campground, or someone working for one, who wants to automate routines, and a developer deciding whether Zapier or the API is the right way to connect a product. If your product serves many campgrounds, read Zapier or the API first.
What the campground gets
Section titled “What the campground gets”Seven triggers start a Zap:
| Trigger in Zapier | Starts when | Grondia event behind it |
|---|---|---|
| New booking | A booking is made, whatever its first status | booking.booked |
| Booking changed | A booking’s dates, guests, price or status change, or it is confirmed | booking.changed |
| Booking canceled | A booking is cancelled | booking.cancelled |
| New guest | A guest profile is created | guest.created |
| Payment received | An online payment succeeds, or a payment is recorded on a booking. A payment taken with the admin’s Collect payment action does not start it (which payments raise an event) | payment.settled, payment.recorded |
| Guest checked in | The campground records a check-in | guest.checked_in |
| Guest checked out | The campground records a check-out | guest.checked_out |
Three actions let a Zap write back:
| Action | What it does |
|---|---|
| Create or update guest | Finds the guest by id, else by email (any letter case), else creates one. A new guest needs a first or last name. A field the Zap leaves empty is left as it is. country and language are two-letter codes |
| Add booking note | Appends [Zapier 2026-07-14] <your note> to the booking’s internal notes, which only the campground’s staff see. The booking is found by its reference, its id or your own external reference. A note is up to 2000 characters |
| Create booking hold | Holds a pitch by creating a pending booking, the same as POST bookings/, with the same checks for availability and booking window. It needs an external_reference, which the app fills in so that a retried step never books twice |
What a Zap cannot do: cancel or refund a booking, create a payment, or start on
an invoice (there is no invoice trigger). The Zapier key is deliberately
narrower than a bookings:write key, which could also cancel and refund.
Each trigger item is a full object, not an id. A booking item has its reference, status, dates, number of nights and guests, pitch type, pitch label, total, amount still due, currency, the guest’s name, email, phone and address, the guest’s comment and the check-in and check-out times. The pitch number is left out when the campground hides it from guests until arrival. A guest item has the guest’s contact details and address. A payment item has the amount, method, payment time and the booking’s guest. A “Booking changed” item gets a new id for every change, so each change starts the Zap once. When you build a Zap, Zapier’s sample data comes from the campground’s most recent real items.
Who sets it up
Section titled “Who sets it up”The campground’s administrator, in the admin under App Store, section “Developer & API”, on the Zapier card.
-
Ask Grondia to switch the Zapier integration on for the campground.
The card is locked until then. Write to Felix, felix@grondia.com, or to Siro, siro@grondia.com.
-
Create the Zapier key on the card.
It is shown once. If it is lost, revoke it and create a new one.
-
In Zapier, add the Grondia app and paste the key when it asks you to sign in. This needs the app to be available to you (see the notice above).
-
Build the Zap. The card lists the live Zaps, with how many deliveries were sent and how many failed, and a Stop button for each.
How a trigger runs
Section titled “How a trigger runs”Campground administrator to Grondia: Create the Zapier key on the card
Campground administrator to Zapier: Add the Grondia app, paste the key
Campground administrator to Zapier: Turn a Zap on, trigger New booking
Zapier to Grondia: Subscribe this Zap's hook address
Grondia to Zapier: Subscription id and signing secret
Grondia: Anna Müller books pitch A12
Grondia to Zapier: Signed webhook with ids only
Zapier to Grondia: Ask for the full booking
Grondia to Zapier: Booking with guest contact data
Zapier: The Zap runs its steps
Zapier to Grondia: Action: add a booking note
Zapier’s hook is an ordinary Grondia webhook: a
signed POST with a compact body that holds ids and no guest data, retried when
it fails. The Zapier app checks the signature with the secret it received when
the Zap was turned on, refuses a delivery older than five minutes, and then asks
Grondia for the full object. That is why guest data never travels in the webhook
body itself. Only hook addresses on Zapier’s own domain, over HTTPS, are
accepted.
What data Zapier sees
Section titled “What data Zapier sees”The key has one scope, zapier. It reaches a small set of routes that exist
for the Zapier app, which are not part of the API reference,
and nothing else in the API. It is not in the Developer API key form, and only
the Zapier card creates it.
Stopping it
Section titled “Stopping it”- Revoke the key on the card: its Zaps stop at once, and deliveries already waiting or being retried are dropped.
- Stop one Zap on the card: Zapier then shows that Zap as broken until it is turned off and on again.
- Disconnect Zapier revokes every Zapier key and stops every Zap.
- If the administrator who created the key stops being an administrator, the key and its Zaps stop. The card shows the key as stopped. Create a new key as another administrator.
- If Grondia switches the integration off for the campground, everything stops the same way.
Edge cases
Section titled “Edge cases”| Situation | What happens | What to do |
|---|---|---|
| A hold is neither paid nor confirmed | It is a pending booking, so it is released after about 30 to 35 minutes and ends as abandoned (life of a booking) |
Confirm it, or have the campground take payment, inside that time |
| A hold step is retried | The first hold is returned (200), so a retry never books twice |
Nothing |
A hold uses an external_reference that another credential created |
409 with external_reference_conflict |
Give the step a unique reference of its own |
| The pitch is taken for those dates | 409 with site_unavailable, like POST bookings/ |
Handle the failure in the Zap |
| Create or update guest would give a guest the name and date of birth of another | 409 with guest_duplicate_name_dob, naming the other guest |
Update that guest by id |
| Add booking note finds no booking | 404 with booking_not_found |
Check the reference |
| The key was revoked or has expired | 401 with key_inactive |
Create a new key on the card |
| The key is live, but its creator is no longer an administrator | 401 with zapier_grant_revoked |
Create a new key as an administrator |
| Create or update guest creates a guest | The new guest profile raises guest.created, which starts a “New guest” Zap |
Do not create guests from a Zap that starts on New guest |
| The Zapier integration is off for the campground | The Zapier routes answer 404 |
Ask Grondia to switch it on |
Zapier or the API
Section titled “Zapier or the API”| You want | Use |
|---|---|
| One campground’s own routines: a message, a spreadsheet row, a task | Zapier |
| A product that many campgrounds use, with your own backend | The API with one key per campground: see Credentials, the Webhooks guide and the webhooks in the reference, and pick the recipe for your kind of product in What you can build |
The zapier scope cannot be given to another app, so a product cannot borrow the
Zapier route. If you build an automation product of your own, use the API like any
other integration: the campground creates your key, you receive the same signed
webhooks, and guest personal data stays redacted unless Felix agrees otherwise.
Go-live checklist
Section titled “Go-live checklist”- Grondia has switched the Zapier integration on for the campground.
- The Grondia app is available to the people who build Zaps (it is private until Zapier has published it).
- The administrator who creates the key will stay an administrator, or another administrator knows to create a new one.
- The campground has decided that Zapier may see its guests’ contact details.
- A test booking started a Zap, and the Zap showed up under live Zaps on the card.
- Holds are confirmed or paid within the pending window.
Related
Section titled “Related”- Webhooks: the events behind the triggers, signed and retried.
- Guest messaging and CRM and Accounting and ERP: the same events for a product of your own.
- Partner program: how a product, as opposed to one campground’s Zaps, gets reviewed and listed.