Publish and schedule WordPress posts
Send structured articles, taxonomy, featured media, and publishing status to WordPress.com or Jetpack-connected sites.
Connect WordPress with WordPress.com OAuth, select a discovered WordPress.com or Jetpack-connected site, then target that account like any other App9 Post destination. Put the article-specific fields under platform_configurations.wordpress. App9 Post uploads ready media to the selected site, builds the WordPress post payload, and records the returned numeric post ID and permalink as the target result.
What this means in practice
Connect WordPress with WordPress.com OAuth, select a discovered WordPress.com or Jetpack-connected site, then target that account like any other App9 Post destination. Put the article-specific fields under platform_configurations.wordpress. App9 Post uploads ready media to the selected site, builds the WordPress post payload, and records the returned numeric post ID and permalink as the target result.
Use the documented brand and account boundaries consistently across the scheduler, REST API, SDK, MCP tools, SSE consumers, and webhooks. That makes the same social operation explainable to an operator and reproducible by an integration.
Implementation checklist
Register a WordPress.com OAuth application or select an available App9-managed credential.
Authorize the posts, media, taxonomy, and sites scopes required by the publishing connector.
Select the numeric site account returned during discovery and inspect its live capabilities.
Provide title and content_html when publishing a full article; use caption as the safe text fallback.
Optionally provide excerpt, slug, status, numeric category and tag IDs, comment status, ping status, or an existing featured media ID.
Schedule with App9 Post publish_at so dispatch, approval, events, credits, and target-level reconciliation stay consistent with other destinations.
Example request
This example uses a server-side API key and an explicit brand selection. Replace placeholder values and keep credentials out of browser bundles, client logs, and source control.
curl --request POST \
--url 'https://postapi.app9.co/v1/social-posts' \
--header 'Authorization: Bearer APP9_POST_API_KEY' \
--header 'X-App9-Post-Brand: BRAND_ID' \
--header 'Content-Type: application/json' \
--data '{
"external_id": "cms-post-8841",
"mode": "scheduled",
"publish_at": "2026-08-01T14:00:00Z",
"target_account_ids": [
"wordpress_site_123"
],
"caption": "Product launch",
"platform_configurations": {
"wordpress": {
"title": "Product launch",
"content_html": "<p>Complete launch article.</p>",
"excerpt": "A brief launch summary.",
"status": "publish",
"categories": [
4
],
"tags": [
9
]
}
},
"timezone": "America/New_York"
}'Operational details
The first beta connector supports WordPress.com and self-hosted sites connected through Jetpack using fixed WordPress.com API endpoints.
An immediate or due App9 Post delivery defaults the WordPress post status to publish; set platform configuration status explicitly when the destination should receive a draft, pending, or private post.
Direct arbitrary self-hosted URLs and WordPress Application Passwords are a separate planned connector because they require guarded endpoint validation, SSRF protection, and a distinct secret lifecycle.
Common mistakes to avoid
- Do not paste a WordPress username, password, Application Password, or provider token into post content or platform configuration.
- Do not send category or tag names where the REST API expects numeric taxonomy IDs.
- Do not assume a Jetpack-connected site grants every requested scope; use the connected account capabilities and target result.
Frequently asked questions
Can App9 Post publish to self-hosted WordPress?
Yes when the site is connected to WordPress.com through Jetpack. Direct Application Password connections to arbitrary self-hosted endpoints are intentionally a separate follow-on.
Can one request publish an article to WordPress and promote it on social networks?
Yes. Add the WordPress site and social accounts as targets, then use destination-specific configuration and account overrides while keeping one parent workflow and independent target results.