Skip to content

Publishing Workflows

Bulk publishing platform requirements

Platform settings and required fields for CSV and Google Sheets bulk posts.

A post moving into a publishing calendar

Use post_content for shared content and platforms for comma-separated destinations such as facebook,instagram. Select only the settings you need in the dashboard template builder. These fields apply to CSV and Google Sheets. Optional settings can remain blank; validate your rows before publishing.

Examples: Instagram requires an image or video. Pinterest requires a board and an image or video; its title and destination URL are optional.

For content limits, edit the shared content, edit a platform version in the CSV preview, or use a separate row. AI optimization in the CSV preview requires unlimited AI text. Legacy content override columns continue to work but are not included in new templates.

See the full CSV guide, Google Sheets guide, and date and import rules.

X

Choose exactly one x_publishing_mode: thread (default, including blank; splits longer content into replies), classic (one post with a 280-character limit), numbered_thread (numbered replies), or long_form (eligible accounts, with thread fallback). Google Sheets provides a dropdown; CSV cannot store dropdowns. Threads below is a separate social platform.

Optional X fields include x_mark_as_sensitive (yes/no; marks media as sensitive), x_limit_replies, x_auto_like_own_post, and the retweet/delete automation settings. Review automation delays and thresholds before enabling them.

Instagram

  • Use share_to_instagram_feed, share_to_instagram_story, or share_to_instagram_reel to specify where to post
  • Set values to "yes" or "no" for sharing options
  • instagram_first_comment: First comment to add after posting
  • instagram_tagged_people: Tag users with @username format (comma-separated)
  • instagram_collaborators: Add collaborators with @username format
  • instagram_thumbnail_offset: Video thumbnail position in seconds (default: 0)

Facebook

  • Use share_to_facebook_feed, share_to_facebook_story, or share_to_facebook_reel
  • For normal multi-image Facebook Feed Posts, use share_to_facebook_feed=true and multiple image URLs. This is not Facebook Linked Carousel.
  • Facebook Linked Carousel uses separate image cards and destination links. CSV and Google Sheets do not currently provide card fields; create linked carousels in the dashboard or use API/MCP settings.carousel. Do not set share_as_facebook_carousel=true in a bulk row.
  • Set values to "yes" or "no" for sharing options
  • facebook_first_comment: First comment to add after posting
  • At least one sharing option must be set to "yes"

TikTok

  • tiktok_title: Optional title override (falls back to post content)
  • tiktok_privacy_level or tiktok_privacy options: public_to_everyone, mutual_follow_friends, self_only, follower_of_creator
  • tiktok_disable_comment (or tiktok_allow_comment): Set to "yes" to disable comments (default: "no")
  • tiktok_disable_duet (or tiktok_allow_duet): Set to "yes" to disable duets (default: "no")
  • tiktok_disable_stitch (or tiktok_allow_stitch): Set to "yes" to disable stitching (default: "no")
  • tiktok_brand_content_toggle: Set to "yes" if this is branded content
  • tiktok_brand_organic_toggle: Set to "yes" for organic brand content
  • tiktok_is_aigc: Set to "yes" if content is AI-generated

YouTube

  • youtube_title: Video title (recommended for better discoverability)
  • youtube_description: Optional detailed video description
  • youtube_tags: Comma-separated tags (e.g., "tag1,tag2,tag3")
  • youtube_privacy options: public, private, unlisted
  • youtube_region_code: Two-letter country code (e.g., "US", "GB")
  • youtube_category_id: YouTube category ID (e.g., "22" for People & Blogs)
  • youtube_made_for_kids: Set to "yes" if content is for children
  • youtube_embeddable: Set to "yes" to allow embedding (default: "yes")
  • youtube_notify_subscribers: Set to "yes" to notify subscribers
  • youtube_thumbnail_url: URL of the custom video thumbnail image (recommended)

LinkedIn

Choose linkedin_post_type: post (default; text or media) or article (a link card for an external article, not a native LinkedIn long-form article). Shared post_content supplies the commentary for either type.

FieldApplies toWhat to enter
linkedin_post_enable_resharingPost and articleyes (default) allows resharing; no disables it.
linkedin_article_sourceArticleRequired public HTTP(S) article URL.
linkedin_article_titleArticleRequired link-card title.
linkedin_article_descriptionArticleOptional link-card summary.
linkedin_article_thumbnail_urnArticleOptional uploaded LinkedIn image URN, such as urn:li:image:...; not an image URL. Leave blank if unavailable.
linkedin_first_commentPost and articleOptional comment added after publishing.
linkedin_visibilityPost and articlepublic, connections, or logged_in. Organization posts use public visibility.
linkedin_feed_distributionPost and articlemain_feed (default) or none.
linkedin_call_to_actionSupported formatsAPPLY, DOWNLOAD, VIEW_QUOTE, LEARN_MORE, SIGN_UP, SUBSCRIBE, REGISTER, JOIN, ATTEND, REQUEST_DEMO, SEE_MORE, BUY_NOW, or SHOP_NOW. LinkedIn determines button availability.
linkedin_content_landing_pageWith a call to actionPublic HTTP(S) destination URL.

LinkedIn's publishing API does not expose an “enable views” switch. Postly maps the fields above to the LinkedIn Posts API. Legacy linkedin_enable_resharing remains accepted. Blank optional values use workspace presets where applicable; explicit row values override them.

Pinterest

  • pinterest_title: Optional Pin title
  • pinterest_description: Optional Pin description
  • pinterest_destination_url: Optional destination; defaults to the first link in the post content
  • pinterest_allow_comments: Set to "yes" to allow comments (default: "yes")
  • pinterest_enable_tracking: Set to "yes" to enable tracking
  • pinterest_tracking_code: Tracking code if tracking is enabled
  • pinterest_thumbnail_url: Optional video cover URL; otherwise a video frame is used

Telegram

  • telegram_send_as_message: Set to "yes" to send as message (default: "yes")
  • telegram_pin_message: Set to "yes" to pin message
  • telegram_disable_web_page_preview: Set to "yes" to disable link previews
  • telegram_disable_notification: Set to "yes" for silent message
  • telegram_has_spoiler: Set to "yes" to mark media as spoiler
  • telegram_protect_content: Set to "yes" to protect content from forwarding
  • telegram_parse_mode: Text formatting options: "Markdown", "HTML", "MarkdownV2" (leave empty for no formatting)

Discord

  • discord_suppress_embeds: Set to "yes" to prevent link embeds
  • discord_suppress_notifications: Set to "yes" to publish silently
  • discord_crosspost_announcement: Set to "yes" to publish an announcement-channel message to following channels
  • discord_forum_thread_name: Required when the destination is a forum or media channel
  • discord_applied_tag_ids: Comma-separated forum tag IDs

WhatsApp

  • send_to_whatsapp: Set to "yes" to send through WhatsApp
  • whatsapp_template_name: Approved Meta template name
  • whatsapp_template_language_code: Template language code such as en_US
  • whatsapp_body_variables: Comma-separated body variable values
  • whatsapp_recipient_phone_numbers: Comma-separated recipient numbers
  • whatsapp_campaign_name: Optional campaign label

Bluesky

  • bluesky_tags: Comma-separated tags
  • bluesky_language_tags: Language code (e.g., "en", "es")
  • bluesky_labels: Content labels/warnings

Threads

  • threads_reply_control options: everyone, accounts_you_follow, mentioned_only
  • threads_allow_quotes: Set to "yes" to allow quotes (default: "yes")
  • threads_mentioned_users: Comma-separated usernames to mention

WordPress

  • wordpress_title: Post title (required when publishing to WordPress)
  • wordpress_slug: Optional post slug
  • wordpress_format options: standard, aside, chat, gallery, link, image, quote, status, video, audio
  • wordpress_password: Set password for password-protected posts
  • wordpress_tags: Comma-separated tags
  • wordpress_categories: Comma-separated category names or IDs
  • wordpress_featured_media_id: Optional existing WordPress media library ID
  • wordpress_featured_media_url: Image URL to upload to WordPress
  • wordpress_featured_media_alt_text: Accessible description for the uploaded cover
  • wordpress_status: publish (default) or draft
  • wordpress_canonical_url: Optional canonical URL
  • wordpress_seo_plugin: auto, rank_math, yoast, aioseo, seopress, seo_framework, slim_seo
  • wordpress_meta_title / wordpress_meta_description: SEO plugin fields; site permissions required
  • wordpress_custom_taxonomies: Use "taxonomy: term, term"
  • wordpress_internal_links: Use "Anchor | https://example.com"
  • wordpress_use_gutenberg_blocks: yes/no

Ghost

  • ghost_title: Post title (required; defaults to post content when omitted)
  • ghost_slug: Optional post slug
  • ghost_tags: Comma-separated tags
  • ghost_custom_excerpt: Optional custom excerpt
  • ghost_featured_image_url: Optional featured image URL
  • ghost_featured_image_alt / ghost_featured_image_caption: Image accessibility and caption text
  • ghost_status options: published, draft
  • ghost_visibility options: public, members, paid
  • ghost_featured: yes/no
  • ghost_canonical_url, ghost_meta_title, ghost_meta_description: SEO fields
  • ghost_custom_template: Optional Ghost theme template filename

Hashnode

  • hashnode_title: Article title (required; defaults to post content)
  • hashnode_subtitle / hashnode_slug: Optional discovery details
  • hashnode_tags: Up to 15 comma-separated tags
  • hashnode_cover_image_url: Public cover image URL
  • hashnode_status options: published, draft
  • hashnode_canonical_url, hashnode_meta_title, hashnode_meta_description: SEO fields
  • hashnode_disable_comments / hashnode_is_delisted / hashnode_enable_toc: yes/no

DEV Community

  • dev_to_title: Article title (required; defaults to post content)
  • dev_to_tags: Up to 4 comma-separated tags
  • dev_to_series: Optional series name
  • dev_to_main_image_url: Public cover image URL
  • dev_to_canonical_url / dev_to_description: SEO details
  • dev_to_organization_id: Optional DEV organization ID
  • dev_to_status options: published, draft

Blogger

  • blogger_title: Post title (required; defaults to post content)
  • blogger_tags: Comma-separated Blogger labels
  • blogger_status options: published, draft

Google Business Profile

  • gmb_post_type options: update, event, offer, product
  • gmb_summary: Post summary text (optional, uses post content if not provided)
  • Update/event CTAs: call, book, order, learn_more, shop, sign_up. Set gmb_call_to_action and gmb_action_url; Call uses the business phone and needs no link.
  • Event posts require: gmb_event_title, gmb_event_start_date, gmb_event_end_date
  • For an offer, set gmb_post_type to offer and provide gmb_offer_title, gmb_offer_start_date and gmb_offer_end_date (YYYY-MM-DD).
  • Optional offer details: gmb_coupon_code, gmb_redeem_url, gmb_terms. Offers use their own button, not gmb_call_to_action.
  • Product posts require: gmb_product_name, gmb_product_url
  • Dates should be in ISO format: YYYY-MM-DDTHH:MM

Previous guide

Approval Workflow

Route drafts through review, lock content during approval, and keep publishing governance in place.

Next guide

Custom Fields and Shortcodes

Use account-specific names, links and addresses in the editor, CSV posts and Google Sheets.

Related guides