This project is not covered by Drupal’s security advisory policy.

If you are new to Drupal, Feeds is a contributed module that imports content from external sources (for example CSV, RSS, or JSON) into your site. Normally you start an import from the Feeds administration UI or from the server command line with Drush.

Feeds Trigger adds a small internal HTTP API: another system can send a POST request and Drupal will run the import for you. That helps teams that want a simple, automatable trigger without giving external systems full Drupal admin access or SSH/Drush on the server.

What solution does this module provide? It bridges automation (HTTP clients, webhooks, cron elsewhere, CI) and Feeds, by exposing one protected route that delegates to Feeds’ own Drush import command, so behavior stays aligned with drush feeds:import.

Features

  • One endpoint: POST /internal/feeds-trigger with either:
    • feed_type — runs an import for every feed instance of that type, or
    • feed_id — runs an import for a single feeds_feed entity.
  • Drush-backed imports: uses Feeds’ feeds:import command, so results match what you would get from the CLI.
  • Flexible authentication (any one succeeds):
    • Drupal permission trigger feeds imports (for trusted logged-in users),
    • shared secret header X-Feeds-Trigger-Token,
    • same secret as query parameter token (for simple callers that cannot set headers).
  • JSON responses with per-feed outcomes for scripting and monitoring.

When and why use it: You already use Feeds and need an HTTP-triggered import from a scheduler, internal tool, or webhook, without opening the Feeds UI or granting shell access.

Example use cases: external orchestrator says “import now” after a source file updates; internal dashboard button; CI step after deploying feed configuration; lightweight integration that only supports URL and query parameters.

Post-Installation

  1. Install and configure Feeds as usual (feed types and at least one feed instance).
  2. Enable Feeds Trigger and rebuild caches (drush cr).
  3. No separate configuration page is required. Behavior is driven by:
    • optional $settings['feeds_trigger_token'] in settings.php for token auth;
    • optional overrides: feeds_trigger_drush_path, feeds_trigger_project_root, feeds_trigger_timeout;
    • permission Trigger Feeds imports for roles that should call the endpoint while logged in.
  4. Call POST /internal/feeds-trigger with exactly one of feed_type or feed_id (query string). The token query parameter, if used, is only for authentication—not a feed selector.
  5. For production, prefer HTTPS, restrict /internal/feeds-trigger at your reverse proxy or firewall when possible, and prefer the header token over the query token to reduce accidental leakage via logs or referrers.

There is no new content type, text format, or Feeds UI screen added by this module beyond the permission.

Additional Requirements

  • Drupal 10 or 11.
  • Feeds module (declared dependency).
  • Drush available on the server (typically vendor/bin/drush relative to the Composer project root), because imports are executed via a subprocess.
  • Symfony Process (pulled in with Drupal’s dependencies) for running Drush.
  • Feeds — required; Feeds Trigger only starts imports for feeds you have already configured.
  • Infrastructure: TLS, reverse proxy allowlists, and log or monitoring around the internal URL are recommended for operational hardening (not Drupal modules per se).

Similar projects

Alternatives include invoking drush feeds:import directly from system cron or CI (no HTTP endpoint), or building a custom REST or resource or event-driven integration that calls Feeds APIs in PHP. Feeds Trigger aims for a minimal surface: one POST route, explicit authentication options, and parity with Drush by delegating to feeds:import.

Supporting this Module

GitHub Sponsors

Community Documentation

  • See the README.md in the project repository for installation, curl examples, response shapes, and troubleshooting.
  • Optional: add DrupalPod, video walkthroughs, or a demo site link here.

Additional notes

  • Large imports may run for a long time; tune feeds_trigger_timeout if subprocess limits are too low.
  • Composer: after the project is on Drupal.org, install with composer require drupal/feeds_trigger using the Drupal package repository.

Project information

Releases