All Collections
Personal websites
Statamic: publishing to multiple collections
Statamic: publishing to multiple collections

Enable StoryChief to publish articles to multiple Statamic collections.

Gregory Claeyssens avatar
Written by Gregory Claeyssens
Updated over a week ago

By default StoryChief will publish to your default collection, using the default blueprint and the mapping defined in config/storychief.php.

The following article explains how to set up publishing to multiple collection types/blueprints and mapping.

Before you get started

Set up the publishing to multiple collections

Step 1. Create a custom field of type "single option" on StoryChief where you can select your collection type.

Add options and set a label and description making it clear for your case.
See the example below.

Step 2. Configure your Statamic website to change collection, blueprint and/or mapping based on the custom field value we created in Step 1.

⚠️ Caution: The following should be done by your developer.

Inside App\Providers\AppServiceProvider.php register a custom implementation for the storychief_config facade.

<?php namespace App\Providers;

use Illuminate\Support\ServiceProvider;

class AppServiceProvider extends ServiceProvider
* Register any application services.
* @return void
public function register()
// Register a new binding for the facade
app()->bind('storychief_config', function () {
return new \App\Facades\CustomStoryChiefConfig();


Step 3. Create the CustomStoryChiefConfig() class where you can change the collection, blueprint and mapping based on the incoming $payload.

<?php namespace App\Facades;

use Statamic\Support\Arr;
use StoryChief\StoryChief\Helpers\Configuration as StoryChiefConfig;

class CustomStoryChiefConfig extends StoryChiefConfig
public function set(array $payload): void
// Find the custom field in the $payload
$collectionCustomField = Arr::first(
$payload['data']['custom_fields'] ?? [],
return (isset($field['key']) && $field['key'] === 'MY_CUSTOM_FIELD_KEY');

$collectionCustomField &&
$collectionCustomField['value'] === 'news'
config()->set('storychief.collection', 'news');
config()->set('storychief.blueprint', 'newsitem');
config()->set('storychief.mapping', [
'title' => 'title',
'content' => 'body',

πŸŽ‰ You're done, grab a coffee, you deserve it!

Check out the next steps below for more in-depth guides or follow-up actions

πŸ“š Next steps

Did this answer your question?