API Ecosystem May Updates

by Rich Steinmetz

As always, on top of documentation improvements and miscellaneous enhancements, we had these updates:

  • New Zapier functionality: Create or Update Sales Opportunity action and Sales Opportunity Moved Stages
  • orders/transaction.created and orders/transaction.updated webhook events now have page and/or funnel context so you can scope your webhook endpoints to transaction from specific funnels.
  • We have a private BETA for first_visit, last_visit, and last_visit_with_utm information on contacts, orders, invoices, and transactions that includes all the visit information like UTM params, IP, user-agent, referrer info, device type, browser, etc. so you can notch up your customer journey tracking.
  • Previously submitted UTM params, are now also showing in FormSubmission payloads.
  • Improved appointments/scheduled_event payload to show more useful information so you can easily take follow-up actions and filter when working with the webhook or Appointments Zapier triggers/actions.

We'd love to encourage you to build your own integrations on top of our APIs and webhooks so we created a page where you can learn all about it: Integrate With Us guide. We'll be highlighting partners every month, so you can see what cool stuff people build and maybe play around with those tools that augment the ClickFunnels platform:

Pingbell - A way to get notifications and dashboards on any device (mobile, TV, etc.) for some of the most important ClickFunnels events around leads, purchases, community, courses and more.

Cometly - Track your customers' journeys from ad over funnel visits to sign up and purchase plus recurring revenue, so you understand which of your ads perform best.

Happy integrating and let us know if you have any questions!

📆 Use the new Appointments::ScheduledEvent webhooks to get notified about happenings with your appointments.

A new webhook event is joining our list of available events to listen for:

Event type
Versions availableDescription
Appointments::ScheduledEvent
appointments/scheduled_event.createdV2Sent when an Appointments::ScheduledEvent is created.
appointments/scheduled_event.canceledV2Sent when an Appointments::ScheduledEvent is canceled.
appointments/scheduled_event.rescheduledV2Sent when an Appointments::ScheduledEvent is rescheduled.

🤖 Get notified with the new "Scheduled Appointment Event Created" Zapier trigger about newly scheduled appointments.


🛠️ Misc UX and DX improvements

  • The Team endpoint now clearly states that you can't modify a workspace subdomain.
  • Fixed minor UX issues and displayed error messages for Zapier triggers and actions.
  • Fixed that temporarily some native integrations were not shown in the ClickFunnels integrations menu.
  • Improvements and fixes in our API reference.

🛍️ Create orders via the API based on payments on external platforms

We have extended External Orders, so now, apart from one-time orders, you can also take subscription payments outside of ClickFunnels and still enjoy funnels and all the automations around orders with subscriptions.

External order guide.

You can join the private BETA by applying via support.


🗂️ Track all activity around API features in your audit logs

Happenings around the API and your integrations are now tracked in your audit logs. Connecting, destroying platform applications, integrations and modifying important resources like products via the API are now all events tracked in your Audit Logs.


🔌 Connect more native integrations to your workflows

These integrations are now available natively for connecting to your workflows:

  • Splio
  • Respond.io
  • Leadsquared
  • InvoiceNinja

👨‍🔧 Subdomain error on change

You will now receive a friendly error when trying to change your workspace's subdomain which is currently not supported in the app.

Prior to and post-FHL, the API team has been busy working on the Stripe integration and External Subscription Orders (One-time orders are already in private BETA).

In the meantime, we also had these noteworthy changes:

🪝 We have added a new orders/invoice.paid webhook event. It's sent each time an invoice's status of a one-time or a subscription order becomes "paid", as opposed to the old subscription.invoice.paid and one-time-order.invoice.paid webhook events, which are only triggered for the specific order type.

🔌 Improvements to our native integrations and recent/upcoming launches: InvoiceNinja, Zendesk Sell, Splio, Reachout, Leadsquared, Zoom.

🎁 New affiliate-related fields in order and invoice payloads so you can get the relevant information about affiliations for an order on the spot:

// Order payload
{
  "id": 28,
  "public_id": "QJrlzj",
  "order_number": "838615",
  "workspace_id": 42000,
...
  "affiliate": { // <--------------- 🎉
    "name": "Josh Fancy",
    "email": "[email protected]"
  },
  "referral_code": { // <--------------- 🎉
    "code": "d473754c5567e94800c1d16ef4b3fb394b9cfe49f25c80f755226186c390740c",
    "default": true
  }
}


// Orders::Invoice payload
{
  "id": 15,
  "public_id": "PhTgJz",
  "order_id": 37,
  "status": "paid",
...
  "order": {
    "id": 37,
    "public_id": "UVdqxS",
    "order_number": "618883",
...
    "affiliate": { // <--------------- 🎉
      "name": "Josh Fancy",
      "email": "[email protected]"
    },
    "referral_code": { // <--------------- 🎉
      "code": "d473754c5567e94800c1d16ef4b3fb394b9cfe49f25c80f755226186c390740c",
      "default": true
    }
  }
}

🤖 Improved Zapier embed as its own app in the ClickFunnels UI. You can now set up and manage zaps without leaving the ClickFunnels app.

📦 Orders::Invoice now shows a fulfillment_status property:

This gives you the information on whether all the line items of an invoice were fulfilled.

🪝 You can also get this information in real-time by listening for the orders/invoice.fulfilled webhook.


🗞️ We added relevant blog post webhook events so customers can now build automations based on blog post lifecycle happenings: blogs/post.published, blogs/post.created, blogs/post.updated, blogs/post.deleted with the following payload:

{
  "data": {
    "id": 715154,
    "url": "https://yoursubdomain.myclickfunnels.com/iguides/wufri",
    "tags": [
      {
        "name": "bubba"
      }
    ],
    "title": "New bloggo title",
    "authors": [
      {
        "last_name": "Doe",
        "first_name": "Joe",
        "email_address": "[email protected]"
      }
    ],
    "image_url": null,
    "public_id": "jVElnZ",
    "seo_title": "Smart SEO title",
    "categories": [
      {
        "name": "knowledge"
      },
      {
        "name": "sharing"
      }
    ],
    "created_at": "2025-01-31T11:08:33.768+01:00",
    "updated_at": "2025-01-31T11:08:33.819+01:00",
    "visibility": "draft",
    "published_at": null,
    "excerpt_content": "wuuuf summary (excerpt)",
    "seo_description": "Smart SEO description"
  },
  "page": null,
  "funnel": null,
  "event_id": "338ebc24-78ee-4cc4-9b67-77bd3c0a996c",
  "created_at": "2025-01-31T11:08:33.872+01:00",
  "event_type": "blogs/post.created",
  "subject_id": 715154,
  "api_version": 2,
  "subject_type": "Blogs::Post",
  "workspace_id": 152039
}

Event type
Versions availableDescription
Contact
blogs/post.createdV2Sent when a Blogs::Post is created.
blogs/post.updatedV2Sent when a Blogs::Post is updated.
blogs/post.deletedV2Sent when a Blogs::Post is deleted.
blogs/post.publishedV2Sent when a Blogs::Post is published (e.g., created in published state or moved out of draft).

🕒 We have added a guide describing how you can work with the human-friendly timezones returned by the ClickFunnels API here.


📩 Did you know that you can subscribe to all the API changelog updates via RSS? Just plug this link into your RSS feed and connect your RSS app to a notification system like email:

You can now make your platform application public by pressing a button:

You could have a platform application where you let ClickFunnels users connect their accounts via OAuth to your platform or app so you can provide your services to them and operate on their data. For example, there is a login button in Zapier that allows you to connect your ClickFunnels account to Zapier. After authorizing Zapier, their platform application can make changes in your account, like creating contacts or knowing when a new form was submitted.

When sorting by a property that may have exact matches, like updated_at, in the past, the order might not have been deterministic. Now, we have our sequential id as a second sort property. Nothing changes if you were just sorting by id (which is still the default sort property).

We just went into private BETA to create and update orders and invoices that were paid off the ClickFunnels platform. You can learn more about external orders and invoices here.

Please let the ClickFunnels support know referencing this changelog entry if you would like to participate in the private BETA.

We have done some updates to our no-code and low-code automation tools that are also powered by the API.


Native integrations custom contact attributes 🤖

Our native integrations now allow you to map custom contact attributes to any of your other tools' contact properties.


Zapier Templates ⚡

You can now install the Zapier app from the UI to make use of our recommended Zap Templates and bring you business automation to the next level!

A new Courses::LessonCompletion endpoint has been added to allow you to mark a lesson as completed.

To mark a lesson as completed by an enrollment, create a Courses::LessonCompletion record by sending lesson_id and enrollment_id to the endpoint.

To undo this, the Courses::LessonCompletion record must be deleted.