Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Sulu Index Now Bundle Laravel Package

linderp/sulu-index-now-bundle

A Sulu CMS bundle that integrates IndexNow, automatically notifying search engines when pages are created, updated, or removed so new and changed content can be discovered and indexed faster. Simple to install and configure in Sulu projects.

View on GitHub
Deep Wiki
Context7

Getting Started

  • First, the caveat: pascallinder/sulu-index-now-bundle is a Sulu CMS (Symfony) bundle, not a Laravel package. There is no service provider, no vendor:publish, no facade, no config/index-now.php. If you are on Laravel you cannot install this as-is — see the equivalent pattern in Implementation Patterns below.
  • What it buys you: automatic IndexNow submission (Bing, Yandex, Seznam, Naver) when Sulu content is published or unpublished, so URL changes reach participating engines without manual pings.
  • Minimal install (Sulu 2.x / Symfony):
    1. composer require pascallinder/sulu-index-now-bundle
    2. Register the bundle in config/bundles.php (or your kernel, depending on Sulu version).
    3. Add config under config/packages/ — the bundle key is sulu_index_now; verify exact option names in vendor/pascallinder/sulu-index-now-bundle/DependencyInjection/Configuration.php before trusting any blog post.
    4. Generate an IndexNow key (8–128 hex chars) and serve it at https://your-host/{key}.txt (or set a custom keyLocation).
    5. bin/console cache:clear and, if the bundle ships Doctrine entities, bin/console doctrine:migrations:migrate.
  • First real use case: open a page in the Sulu admin, change the title/slug, hit Publish, then confirm the outbound request in the Symfony profiler or var/log/dev.log, and check the IndexNow report in Bing Webmaster Tools. That end-to-end loop is the whole value proposition — verify it before wiring anything else.

Implementation Patterns

  • Let the bundle's event subscriber do the work. Sulu's publish/unpublish domain events are the integration point. Don't call the HTTP endpoint yourself in parallel listeners — you'll double-submit.
  • Manual submission for custom content. Inject the bundle's submission service (locate it with bin/console debug:container | grep -i indexnow) into your own listeners or commands when you have content types the bundle doesn't hook, or when you want to submit from an import job.
  • Bulk backfill. Write a Symfony console command that walks ContentMapper results and submits in batches of up to 10,000 URLs per request. Run it once after go-live, then never again from a request cycle.
  • Multi-locale / multi-domain Sulu sites. IndexNow is per-host, and each host needs its own key file. Loop over domains and submit per-host payloads rather than mixing hosts in one urlList.
  • Staging discipline. Disable submission in dev/staging via env var. Submitting your staging.example.com URLs is harmless but pollutes reports; submitting production URLs from staging is not.
  • The Laravel equivalent, if you're not on Sulu. IndexNow is a trivial protocol: Http::post('https://api.indexnow.org/indexnow', ['host' => ..., 'key' => ..., 'keyLocation' => ..., 'urlList' => [...]]). Put it in a queued job fired from a model observer on save/publish, with ShouldBeUnique to dedupe. That is roughly what this bundle does for Sulu — worth knowing before you adopt a CMS-specific dependency.

Gotchas and Tips

  • The key file is the usual failure. The file must be served at the host root, be publicly reachable without auth or redirects, and the filename (minus .txt) must exactly equal the key value. A trailing slash or a CDN cache miss will yield a silent rejection.
  • Google does not participate in IndexNow. Expect Bing/Yandex/Seznam/Naver only. Don't remove your sitemap.
  • Failures are quiet. IndexNow returns 200/202 on success and 4xx on key/format problems, but the bundle may swallow transport exceptions during the publish request. Enable logging on the bundle's namespace and watch for it after every deploy that touches content.
  • Publishing becomes a network call. If submission is synchronous, a slow engine response delays or fails the publish action in the admin UI. Check whether the bundle defers to a message bus; if not, wrap submissions in your own queue for high-traffic sites.
  • Rate limits are per host: 10,000 URLs per request, 10,000 per day, roughly one request per second. Batch and throttle backfills.
  • Pre-1.0 versioning. At 0.2.x the config schema and service IDs can change in a patch. Pin the version in composer.json and read Configuration.php after every upgrade instead of relying on the changelog — the 0.2.5 → 0.2.5.1 notes are an empty changelog link, i.e. no documented changes at all.
  • Extension points: to alter payloads or add engines, decorate the bundle's submission service (services: ... decorates:) rather than forking. Clear the Symfony cache after any config or service override; stale container definitions are the #1 cause of "my config change did nothing."
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
mehedimi/laravel-amp-mail
happones/laravel-vue-i18n-generator
jwerd/inertia-table
siberfx/flysystem-wasabi
hollyit/token-replace
ippanelcom/laravel-sdk
adachsoft/changelog-linter
adachsoft/collection
payerurl/telegrambot-crypto-payment-instant-payout
dskripchenko/laravel-hybrid-search
riorizkyrainey/lara-ced
mehedimi/static-vel
zharp/zharp
nonsapiens/bigquery-model-sync
lgu-bayambang-ict-office/lgu-laravel-development-standards
andydefer/laravel-support
se7enxweb/flysystem
lampwick/laravel
jeslage/statamic-emojis
micahdshackelford/rmap-laravel