Is there a way to auto-create a sections Site Settings and propagate when a new site is created? My customer will have lots of sections and lots of entries in each, for each site. Over time they will add new language sites. 

When a new site is added, there are no sections or entries for it. So we have to then edit each section to set the URL format and template, even though they will be the same for each site. 

I would like to make it as easy and quick for the customer to add new sites. 

So is there a way I can automatically set these values, enable the site, and propagate entries, for every section (or even certain sections), every time they create a new Site? 

Thanks
You can use the EVENT_AFTER_SAVE_SITE event to create/update the new section settings

Event::on(
    Sites::class,
    Sites::EVENT_AFTER_SAVE_SITE,
    function (SiteEvent $event) {
        if ($event-&gt;isNew) {

            ProjectConfigHelper::ensureAllSitesProcessed();
            $siteId = $event-&gt;site-&gt;id;

            // array of sections you want to propagate
            $sectionsToActivate = [
                'test',
            ];

            foreach ($sectionsToActivate as $sectionHandle){

                $section = Craft::$app-&gt;getSections()-&gt;getSectionByHandle($sectionHandle);
                if($section !== null){
                    /** @var \craft\models\Section_SiteSettings[] $siteSettings */
                    $siteSettings = $section-&gt;getSiteSettings();

                    // the site you want to clone from
                    $siteSettings[$siteId] = clone $siteSettings[1]; 
                    $siteSettings[$siteId]-&gt;id = null;
                    $siteSettings[$siteId]-&gt;siteId = $siteId;

                    // eventually you want to change some other settings ¯\_(ツ)_/¯
                    //$siteSettings[$siteId]-&gt;template = '';
                    //$siteSettings[$siteId]-&gt;uriFormat = '';
                    //$siteSettings[$siteId]-&gt;hasUrls = '';

                    $section-&gt;setSiteSettings($siteSettings);
                   Craft::$app-&gt;getSections()-&gt;saveSection($section);
                }
            }
        }
    }
);


Explanation: As soon as you create a new site, you'll loop all sections you want to activate and grab their "main" site settings, copy them and set the id to null in order to create a new record