Social Media Posts
Schedule and automatically publish marketing posts to Facebook, Instagram, X (Twitter), Threads and LinkedIn straight from your dashboard.
How it works
- Open Marketing → Social Posts in the dashboard.
- Connect your platforms once under Connections (
/social/settings) using permanent credentials — see the per-platform guides below. - Click New Post, write your content, pick platforms, and either Publish now or schedule a date & time.
- Scheduled posts publish automatically (checked every few minutes). The list shows each platform's icon colored by result — brand color = posted, red = failed (hover the icon for the error), grey = pending.
- Failed or partly-published posts can be retried with the send button — already-published platforms are never posted twice.
Sharing blog posts
Once your platforms are connected, every post in Blog → Posts has a Share action that opens the social composer pre-filled with the blog title, description, link and image — pick platforms and schedule as usual.
Instagram always requires an image. For X, your app needs write + media permissions (see below).
Getting permanent credentials
All tokens are stored encrypted per shop and only used by Ecomplify's publishing service. After saving, secrets display masked — re-saving the masked value keeps your stored secret.
Facebook (Page)
You need: Page ID and a long-lived Page Access Token.
- Go to developers.facebook.com → My Apps → Create App → type Business.
- In the app dashboard, add the Facebook Login product (no further setup needed) and note your App ID and App Secret (App settings → Basic).
- Open the Graph API Explorer:
- Select your app, click Generate Access Token and log in.
- Grant the permissions:
pages_show_list,pages_manage_posts,pages_read_engagement.
- Exchange the short-lived token for a long-lived user token:
https://graph.facebook.com/v25.0/oauth/access_token?grant_type=fb_exchange_token&client_id=APP_ID&client_secret=APP_SECRET&fb_exchange_token=SHORT_TOKEN - Get your Page ID and a Page token (page tokens derived from a long-lived user token do not expire):
The response lists your pages — copy
https://graph.facebook.com/v25.0/me/accounts?access_token=LONG_LIVED_USER_TOKENid(Page ID) andaccess_token(Page Access Token). - Paste both into Connections → Facebook.
Instagram (Business account)
You need: Instagram Business Account ID and an access token (shares the Facebook app above).
- Convert your Instagram account to a Business/Creator account and link it to your Facebook Page (Instagram app → Settings → Business tools).
- In the same Meta app as Facebook, grant these extra permissions in the Graph API Explorer:
instagram_basic,instagram_content_publish,business_management. - Find your Instagram Business Account ID:
Copy
https://graph.facebook.com/v25.0/PAGE_ID?fields=instagram_business_account&access_token=PAGE_ACCESS_TOKENinstagram_business_account.id. - Use the long-lived user token from the Facebook steps as the access token.
- Paste both into Connections → Instagram. Remember: every Instagram post needs an image.
X (Twitter)
You need 4 values: API Key, API Key Secret, Access Token, Access Token Secret.
- Go to developer.x.com and create a developer account (Free tier allows posting).
- Create a Project + App in the developer portal.
- In the app's Settings → User authentication settings click Set up:
- App permissions: Read and write (and media).
- Type of App: Web App, Automated App or Bot.
- Callback URL / website: your shop URL (required but unused).
- In Keys and tokens:
- Copy API Key and API Key Secret (Consumer Keys).
- Under Access Token and Secret click Generate — make sure it says "Created with Read and Write permissions" (regenerate after changing permissions in step 3).
- Paste all four into Connections → X (Twitter). These tokens do not expire.
Threads
You need: Threads User ID and an access token.
- In developers.facebook.com create (or reuse) an app and add the Threads API product (use case: Access the Threads API).
- Add your Threads account as a tester (App roles) and accept the invite in the Threads app (Settings → Account → Website permissions).
- Generate a token with scopes
threads_basic,threads_content_publish(Threads API → settings → generate token). - Exchange it for a long-lived token (valid 60 days, refreshable):
https://graph.threads.net/access_token?grant_type=th_exchange_token&client_secret=APP_SECRET&access_token=SHORT_TOKEN - Get your user ID:
https://graph.threads.net/v1.0/me?fields=id&access_token=TOKEN - Paste both into Connections → Threads.
LinkedIn
You need: Access Token and your Author URN.
- Create an app at developer.linkedin.com (you must be an admin of the LinkedIn Page you want to post to).
- Under Products, request Share on LinkedIn and Sign In with LinkedIn using OpenID Connect (for posting as your company page also request Community Management API).
- Under Auth, add redirect URL
http://localhost:8765/callbackand copy the Client ID/Secret. - Authorize once in your browser:
Then exchange the returned
https://www.linkedin.com/oauth/v2/authorization?response_type=code&client_id=CLIENT_ID&redirect_uri=http://localhost:8765/callback&scope=openid%20profile%20w_member_socialcodeathttps://www.linkedin.com/oauth/v2/accessTokenfor an access token (valid ~60 days). - Your Author URN:
- Personal:
urn:li:person:XXXX— XXXX is thesubfromhttps://api.linkedin.com/v2/userinfo. - Company page:
urn:li:organization:XXXX— XXXX is the numeric ID in your LinkedIn page URL (linkedin.com/company/XXXX/admin).
- Personal:
- Paste both into Connections → LinkedIn.
Token expiry quick reference
| Platform | Token lifetime | Renewal |
|---|---|---|
| Facebook Page | Does not expire (from long-lived user token) | Only if you change your Facebook password / revoke the app |
| ~60 days (long-lived user token) | Re-exchange before expiry | |
| X | Does not expire | Only if regenerated |
| Threads | 60 days (long-lived) | Refresh via th_refresh_token before expiry |
| ~60 days | Re-authorize (step 4) |
If a platform starts failing with an authorization error in the post list, refresh that token and save it again in Connections.