changelog
Announcement: API update for externally controlled actions
August 20, 2026
OnePageCRM will start rejecting API writes to actions owned by an external system on October 1st 2026. Please review as you will be required to update if you write to actions through the OnePageCRM API.
We have some new features in the works here at OnePageCRM. One of them will start bringing work into your Action Stream from outside the CRM, so meetings booked somewhere else turn up in your day without anyone typing them in. More on that soon.
That does mean a breaking change to the API.
On October 1st 2026, updating, completing, or deleting an action that is owned by an external system will return 409 Conflict. Nothing changes before then. Two additions are available today so you can prepare: a read-only externally_controlled flag on every action, and a new endpoint that unlinks an action and makes it writable again.
Does this affect me?
Only if your integration writes to actions through the OnePageCRM API. If it just reads them, there is nothing to do.
How do I tell whether an action is locked?
Every action now comes back with a read-only externally_controlled boolean.
curl -u "USER_ID:API_KEY" \
"https://app.onepagecrm.com/api/v3/actions/ACTION_ID.json"
{
"id": "5aeac8789007ba56ffca92b9",
"text": "Discovery call with Jane",
"status": "date_time",
"date": "2026-10-14",
"exact_time": 1791990000,
"done": false,
"externally_controlled": true
}
It comes back on every action, including the actions nested inside a contact, so you do not need a second request.
Is it ever true after the event has happened?
No. It is true only while the event is still ahead of you. It is false on an ordinary action, on one you have unlinked, and on one whose event time has already passed.
We work it out from the event time rather than storing it, so an action you read as true this morning can be freely editable by the afternoon.
Which fields are locked?
text,date,exact_time,status, anddoneare locked.assignee_idstays writable, so you can reassign a locked action to a colleague.
What exactly will fail on October 1st?
| Operation | Result |
|---|---|
Update text, date, exact_time, status, or done | 409 Conflict |
| Mark as done | 409 Conflict |
| Delete | 409 Conflict |
Update assignee_id | Succeeds |
A
PUTreplaces the whole action by default. So reassigning needspartial=true, or a full body with the meeting fields unchanged.
The error follows the same shape as every other API v3 error.
{
"status": 409,
"message": "Conflict",
"error_name": "conflict",
"error_message": "Action mirrors an upcoming external event. Unlink it first.",
"errors": {}
}
How do I make a locked action writable again?
curl -X PUT -u "USER_ID:API_KEY" \
"https://app.onepagecrm.com/api/v3/actions/ACTION_ID/unlink.json"
Every field becomes writable again and externally_controlled flips to false. Calling it on an action that has no external event returns a 409 Conflict.
Does unlinking cancel the meeting?
No. Unlinking stays inside OnePageCRM, and nothing is sent to the other system. It only means we stop following that event.
What should my integration do?
You (or your development team) will need to handle 409 Conflict on the action update, complete, and delete endpoints. When you hit a locked action, either skip it or unlink it first. Skipping is the safer default for most integrations, since an event somebody has scheduled is rarely something an automation should be rewriting on their behalf.
Check the flag before you write as well, but treat the 409 as the real guard. The state can change between your read and your write.
Does this show up in webhooks?
Yes. externally_controlled is now included in the action webhook
payload, alongside the fields that were already there.
{
"type": "action",
"reason": "created",
"timestamp": 1781426755,
"secretkey": "your-configured-secret",
"data": {
"action": {
"id": "5aeac8789007ba56ffca92b9",
"text": "Discovery call with Jane",
"status": "date_time",
"date": "2026-10-14",
"exact_time": 1791990000,
"done": false,
"externally_controlled": true
}
}
}
Full details in the webhook payload reference.
Do I need to check my workflows in Zapier?
Your Zaps should keep working as they are β every published OnePageCRM trigger and action is unaffected.
The one thing to check is a Custom Action you built yourself. If
you have one that completes, deletes, or updates an action, it calls
the API directly, so it is affected like any other integration and may
hit a 409 Conflict.
externally_controlled comes through in the action webhook payload, so your Zap can filter on it and either skip those actions or
unlink them first.
Do I need to check my workflows in Make?
Your scenarios should keep working as they are β every published OnePageCRM module is unaffected.
The one thing to check is Make an API Call. If you use it to
complete, delete, or update an action, it calls the API directly, so
it is affected like any other integration and may hit a
409 Conflict.
externally_controlled comes through in the action webhook payload, so your scenario can filter on it and either skip those actions
or unlink them first.
Anything else to plan for?
Nothing gets completed automatically when the lock lifts, because an event whose time has passed is not proof that it happened. And if the event is canceled in the other system, we unlink the action rather than delete it, so real follow-up work stays in OnePageCRM for you.
The full endpoint details are in the API reference. If you have any questions or need any additional information, please get in touch and we will be happy to help you.