Drupal is a registered trademark of Dries Buytaert
cms 2.1.0 Update released for Drupal core (2.1.0)! bootstrap 8.x-3.40 Minor update available for theme bootstrap (8.x-3.40). menu_link_attributes 8.x-1.7 Minor update available for module menu_link_attributes (8.x-1.7). editoria11y 2.2.22 Minor update available for module editoria11y (2.2.22). ai 1.2.13 Minor update available for module ai (1.2.13). ai 1.3.2 Minor update available for module ai (1.3.2). moderated_content_bulk_publish 2.0.51 Minor update available for module moderated_content_bulk_publish (2.0.51). moderated_content_bulk_publish 2.0.50 Minor update available for module moderated_content_bulk_publish (2.0.50). editoria11y 2.2.21 Minor update available for module editoria11y (2.2.21). eca 3.1.0 Minor update available for module eca (3.1.0). sophron 3.1.1 Minor update available for module sophron (3.1.1). ai 1.3.1 Minor update available for module ai (1.3.1). seven 2.0.0-beta6 New beta version released for theme seven (2.0.0-beta6). seven 1.0.1-beta1 First beta version released for theme seven (1.0.1-beta1). layout_paragraphs 3.0.0-beta1 First beta version released for module layout_paragraphs (3.0.0-beta1). raven 7.3.8 Minor update available for module raven (7.3.8). bamboo_twig 6.0.7 Minor update available for module bamboo_twig (6.0.7). ebt_core 1.4.38 Minor update available for module ebt_core (1.4.38). ept_core 1.4.24 Minor update available for module ept_core (1.4.24). block_exclude_pages 2.2.2 Minor update available for module block_exclude_pages (2.2.2).

posse_post

No security coverage
View on drupal.org

POSSE Post implements the POSSE (Publish on your Own Site, Syndicate Elsewhere) philosophy for Drupal. When you publish a node, POSSE Post automatically creates and sends a corresponding post to your connected social media accounts, so your content lives on your own site first and social networks get the copy.

This module is for site owners who want to maintain a canonical archive of their content on their own Drupal site while still reaching audiences on platforms like Bluesky, Mastodon, LinkedIn, Facebook, and Instagram.

For a full description of the module, visit the project page.

Submit bug reports and feature suggestions, or track changes in the issue queue.

Table of contents

  • Background
  • Requirements
  • Installation
  • Configuration
  • Platform setup guides
  • Troubleshooting & FAQ
  • Maintainers

Background

There are many more robust tools for managing multiple social networks, such as Buffer, Hootsuite, and Metricool, which offer scheduling, analytics, engagement tracking, and more. This module is not that.

Within the Drupal ecosystem, Social Post provides a framework for social network integrations, but it requires a separate sub-module for each platform, and most of those sub-modules have not been updated recently. The POSSE module takes a similar approach to this one but has not had a release since 2021 and targets Drupal 8. POSSE Post is a self-contained solution that does not depend on any third-party Drupal modules.

This is an opinionated module meant to provide a single, self-hosted solution for POSSE. It is most similar to POSSE Party, but Drupal-specific. POSSE Party requires a customized Atom feed that Drupal does not provide out of the box, and it required more memory than my small server could handle.

Where possible, this module handles OAuth authorization directly. LinkedIn, for example, has a built-in authorization flow that fetches and stores your access token automatically. For other platforms this module cannot make the process of getting access tokens, API keys, and credentials any easier. It does not provide a separate OAuth server or relay service. It is just another Drupal module that talks directly to each platform's API.

Also be aware that this module does not offer scheduling, optimal posting times, engagement analytics, or any other marketing best practices. It just reposts your content.

Some platforms, like Mastodon, make POSSE fairly straightforward. Others, like Facebook, Instagram, and LinkedIn, make the process quite cumbersome. This module assumes what you really care about is your own site, and that what gets posted to social networks is secondary. If a platform makes its API too difficult to use, the likely outcome is dropping support for that platform altogether.

I have been blogging since the early 2000s and use this module on my own site. I intend to keep it working as long as the social networks allow.

Requirements

  • Drupal 10 or 11
  • PHP 8.1 or higher
  • The Node module (Drupal core)
  • Composer (used to install the vlucas/phpdotenv library for .env support)
  • An account on each target platform with API access enabled (see Platform setup guides below)

Installation

Install as you would normally install a contributed Drupal module. For further information, see Installing Drupal Modules.

After enabling the module, run database updates:

drush updatedb

Configuration

  1. Add a social account. Go to Configuration > Web services > POSSE Post > Social Accounts and click Add social account. Select a platform, enter a label and username, and choose which content types should be crossposted.

  2. Set credentials. After saving the account, the credentials table on the edit page shows the exact environment variable names you need to set. Add these to a .env file at your project root (POSSE Post loads this file automatically on each request) or as an environment variable on your server.

  3. Enable sending. Set the SEND_CROSSPOSTS environment variable in your production environment to enable crossposting. If this variable is not set, POSSE Post will not create or send any crossposts. This prevents accidental posts from development or staging environments.

    SEND_CROSSPOSTS=1 
  4. Publish a node. When you publish a node of an enabled content type, POSSE Post creates a crosspost record and queues it for sending. Crossposts are processed on the next cron run.

Permissions. Grant the Administer POSSE Post permission to any roles that should manage accounts and view crosspost records.

Manual publishing. Crossposts can be published immediately from Configuration > Web services > POSSE Post > Crossposts without waiting for cron. Individual accounts can also be configured to require manual creation or manual publishing.

Content customization. Each account supports a format string with tokens ({title}, {summary}, {content}, {url}, {author_name}), field mappings, URL appending, truncation to the platform's character limit, and optional CamelCase hashtags derived from taxonomy terms.

Platform setup guides

Each platform requires its own API credentials. Setup guides are available in the module's admin interface at Configuration > Web services > POSSE Post > Help or in the docs/ directory:

Troubleshooting & FAQ

Crossposts are not being sent. Check that the SEND_CROSSPOSTS environment variable is set in your environment. The dashboard at Configuration > Web services > POSSE Post shows whether the variable is set. Also confirm the relevant social accounts are active.

A crosspost shows a "failed" status. Open the crosspost record to view the error message. Common causes are expired tokens, incorrect credentials, or a platform API change. Update the relevant environment variables and use the Retry action to attempt the crosspost again.

I published a node but no crosspost was created. Confirm that the account is active and that the node's content type is listed in the account's enabled content types. Also verify that SEND_CROSSPOSTS is set.

Crossposts are stuck in "pending" status. Cron must run for pending crossposts to be queued and sent. You can also publish them immediately using the Publish now action on the Crossposts page. If a backlog accumulates, use the Clear pending button to remove records you no longer want sent.

Can I crosspost to multiple accounts on the same platform? No. POSSE Post supports one account per platform. This is intentional. The module's credential naming convention is based on platform, not account.

Maintainers

Activity

Total releases
1
First release
Apr 2026
Latest release
5 hours ago
Release cadence
Stability
0% stable

Releases

Version Type Release date
1.0.0-alpha1 Pre-release Apr 8, 2026