Skip to content
API PlatformDevelopers

Recipes · R3

Appointment reminders from a booking system or spreadsheet

Your own scheduled job reads tomorrow's bookings and sends each customer a reminder template.

Goal: Fewer no-shows, with reminders that never go out twice.

What starts it

Your scheduled job

Your cron job, every morning — one run per booking row.

Your values

The customer's phone from the booking.

The customer's name.

Your booking id.

The appointment day.

The appointment time.

Test mode (dry run): every step runs on your account, but nothing changes and nothing is sent.

  1. Step 1

    Find your reminder template

    GETList WhatsApp templates

    Do this once per run, not per row.

    curl -X GET 'https://mcp.wa-api.cloud/v1/templates?status=APPROVED&search=reminder' \
      -H "Authorization: Bearer $API_KEY"

    Passes on: template_id (from data.0.id)

  2. Step 2

    Make sure the customer is a contact

    POSTCreate or update a contact

    curl -X POST 'https://mcp.wa-api.cloud/v1/contacts' \
      -H "Authorization: Bearer $API_KEY" \
      -H 'Content-Type: application/json' \
      -H 'Idempotency-Key: booking-bk-5521-contact' \
      -d '{
      "phone": "+15555550125",
      "name": "Omar Test"
    }'

    Passes on: contact_id (from id)

  3. Step 3

    Send the reminder

    POSTSend a WhatsApp template

    The idempotency key is the booking id plus the day, so re-running the job the same day sends nothing new.

    curl -X POST 'https://mcp.wa-api.cloud/v1/messages/template' \
      -H "Authorization: Bearer $API_KEY" \
      -H 'Content-Type: application/json' \
      -H 'Idempotency-Key: booking-bk-5521-2026-09-25' \
      -d '{
      "contact_id": "{{steps.contact.contact_id}}",
      "template_id": "{{steps.templates.template_id}}",
      "body_variables": [
        "Omar Test",
        "2026-09-25",
        "10:30"
      ]
    }'

Good to know

  • Send caps apply; spread large batches over the morning.

Validated against the API spec on every build