Skip to main content

Social Media Posts

Schedule and automatically publish marketing posts to Facebook, Instagram, X (Twitter), Threads and LinkedIn straight from your dashboard.

How it works

  1. Open Marketing → Social Posts in the dashboard.
  2. Connect your platforms once under Connections (/social/settings) using permanent credentials — see the per-platform guides below.
  3. Click New Post, write your content, pick platforms, and either Publish now or schedule a date & time.
  4. 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.
  5. 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.

tip

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.

  1. Go to developers.facebook.comMy Apps → Create App → type Business.
  2. In the app dashboard, add the Facebook Login product (no further setup needed) and note your App ID and App Secret (App settings → Basic).
  3. 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.
  4. 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
  5. Get your Page ID and a Page token (page tokens derived from a long-lived user token do not expire):
    https://graph.facebook.com/v25.0/me/accounts?access_token=LONG_LIVED_USER_TOKEN
    The response lists your pages — copy id (Page ID) and access_token (Page Access Token).
  6. Paste both into Connections → Facebook.

Instagram (Business account)

You need: Instagram Business Account ID and an access token (shares the Facebook app above).

  1. Convert your Instagram account to a Business/Creator account and link it to your Facebook Page (Instagram app → Settings → Business tools).
  2. In the same Meta app as Facebook, grant these extra permissions in the Graph API Explorer: instagram_basic, instagram_content_publish, business_management.
  3. Find your Instagram Business Account ID:
    https://graph.facebook.com/v25.0/PAGE_ID?fields=instagram_business_account&access_token=PAGE_ACCESS_TOKEN
    Copy instagram_business_account.id.
  4. Use the long-lived user token from the Facebook steps as the access token.
  5. 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.

  1. Go to developer.x.com and create a developer account (Free tier allows posting).
  2. Create a Project + App in the developer portal.
  3. 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).
  4. 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).
  5. Paste all four into Connections → X (Twitter). These tokens do not expire.

Threads

You need: Threads User ID and an access token.

  1. In developers.facebook.com create (or reuse) an app and add the Threads API product (use case: Access the Threads API).
  2. Add your Threads account as a tester (App roles) and accept the invite in the Threads app (Settings → Account → Website permissions).
  3. Generate a token with scopes threads_basic, threads_content_publish (Threads API → settings → generate token).
  4. 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
  5. Get your user ID:
    https://graph.threads.net/v1.0/me?fields=id&access_token=TOKEN
  6. Paste both into Connections → Threads.

LinkedIn

You need: Access Token and your Author URN.

  1. Create an app at developer.linkedin.com (you must be an admin of the LinkedIn Page you want to post to).
  2. 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).
  3. Under Auth, add redirect URL http://localhost:8765/callback and copy the Client ID/Secret.
  4. Authorize once in your browser:
    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_social
    Then exchange the returned code at https://www.linkedin.com/oauth/v2/accessToken for an access token (valid ~60 days).
  5. Your Author URN:
    • Personal: urn:li:person:XXXX — XXXX is the sub from https://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).
  6. Paste both into Connections → LinkedIn.

Token expiry quick reference

PlatformToken lifetimeRenewal
Facebook PageDoes not expire (from long-lived user token)Only if you change your Facebook password / revoke the app
Instagram~60 days (long-lived user token)Re-exchange before expiry
XDoes not expireOnly if regenerated
Threads60 days (long-lived)Refresh via th_refresh_token before expiry
LinkedIn~60 daysRe-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.