The moment it happens
Create or update posts from a link
Anything you send to your own link becomes a WordPress draft, or updates the existing post with the same slug.
- Runs
- The moment it happens
- Apps
- WordPress
- AI
- Not needed
- Access
- read+write
Send this to your assistant
Create a ClickRuntime automation: give me a link I can send a title, slug and body to. Create a WordPress draft from it, or update the post if that slug already exists.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
A lot of content starts somewhere other than the WordPress editor. A form builder collects a testimonial, a newsletter tool finishes a send, a teammate drops notes into a shared doc, and someone then has to copy it across, format it and hit publish. The copy-paste step gets skipped, or it gets done twice and leaves two near-identical posts.
This one gives you a trigger link. Whatever system you point at it sends a title, content and slug, and the moment the request arrives, the automation looks for an existing post with that slug. If it finds one it updates it, and if not it creates a new post.
Developers and no-code builders use it to connect any tool that can send a webhook to WordPress without writing a plugin.
What you get out of it
Any tool can publish to the site
Forms, scripts, spreadsheets and other apps that can call a URL can now create posts, which means your content workflow is not limited to what a plugin supports. That makes WordPress a destination for the whole stack, not only for people who log in.
No duplicate posts from re-sends
Looking the post up by slug first means a retried request or a corrected version updates the existing article instead of creating a second copy for search engines to compare.
Corrections go live without logging in
Fixing a price or typo in the source system can push the change to the live post in seconds, so the site never lags behind the record you actually maintain.
Instant, not on a timer
The post is written when the request arrives, so an event such as an approved press release or a new case study appears on the site immediately. Time-sensitive content such as a release note or event update goes live while it is still news.
A clear trail of what arrived
Each call is a run you can inspect, so if a post looks wrong you can check what was received rather than guessing which tool sent bad data. Having that record shortens debugging from a guessing game to reading what was sent.
How it works
What happens, step by step
When you send a title and content to your automation's link, ClickRuntime starts straight away.
It checks WordPress for an existing post with the same slug.
If there is one, it updates that post. If not, it creates a new draft.
Before it runs live
- Connect WordPress
- Paste your automation's link into the other app's webhook settings
What you get
Build your own
Need it to work differently?
Your own rules
Conditions, thresholds, filters and exceptions, written the way you'd explain them to a colleague.
Any number of apps
One automation can read from one app and update several others. Over 248 apps are ready, and anything with an API works too.
AI where it helps
Summaries, classification, extraction and drafts use ClickRuntime's built-in AI, with no extra key.
On a schedule or on each event
Runs as often as every 5 minutes, or the moment an app sends an event, and keeps track of what it already handled.
Changes you can ask for
- Act only on the items that match your own rules, and skip the rest
- Add an AI step, for example to summarize, sort or draft a reply
- Add another app, for example also send it to Slack
- Combine it with other WordPress steps into one automation
Under the hood
The code that runs this automation
from clickruntime import on_event, credentials, http
SITE = "https://blog.example.com"
def wp(method, path, **kw):
resp = http.request(method, f"{SITE}/wp-json/wp/v2/{path}", **kw,
auth=("admin", credentials.secret("WP_APP_PASSWORD")))
resp.raise_for_status()
return resp.json()
@on_event
def handle(event):
body = event.json or {}
fields = {"title": body["title"], "slug": body["slug"], "content": body.get("body", "")}
existing = wp("GET", "posts", params={"slug": body["slug"], "status": "any", "context": "edit"})
if existing:
post = wp("POST", f"posts/{existing[0]['id']}", json=fields)
return {"updated": post["id"]}
post = wp("POST", "posts", json={**fields, "status": "draft"})
return {"created": post["id"]}FAQ
Common questions
What does the sending system need to include?
Can I protect the link so nobody else can post?
Will it publish immediately or save a draft?
What permissions does it need?
Does it need AI?
How many runs does it use?
Can I change how it works?
Related
You might also like
Get a monthly CSV of all your posts
A spreadsheet file with every post's title, link, status, date and categories arrives in your inbox each month.
See how it worksUnpublish posts past a certain age
Posts older than your cutoff are set back to draft each week, and you get the list of what changed.
See how it worksAnnounce new posts in Slack
When a post goes live, your team sees its title and link in Slack without anyone sharing it.
See how it worksKeep exploring
Set up “Create or update posts from a link” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.