Hook: mam_fastlane_settings

Purpose

The only extension point for the publish payload. Fired by mam_main_app_publishing just before the publish-request POST to WPMAM. Sibling plugins use this to inject build-time config (third-party SDK keys, custom Info.plist entries, gradle properties, custom URL schemes).


Signature

$settings = apply_filters( 'mam_fastlane_settings', array $settings );
Parameter Type Description
$settings array The Fastlane settings array built from the persisted publish-app options

Returns: array — the augmented settings.


Example: inject a third-party SDK key into iOS Info.plist

add_filter( 'mam_fastlane_settings', function ( array $settings ): array {

    $sdk_key = get_option( 'my_plugin_sdk_key' );
    if ( $sdk_key ) {
        $settings['ios_extra_plist']               = $settings['ios_extra_plist'] ?? array();
        $settings['ios_extra_plist']['MyPluginSDKKey'] = $sdk_key;
    }

    return $settings;
} );

Example: register a custom URL scheme

add_filter( 'mam_fastlane_settings', function ( array $settings ): array {

    $settings['custom_url_schemes']   = $settings['custom_url_schemes'] ?? array();
    $settings['custom_url_schemes'][] = 'myplugin-callback';

    return $settings;
} );

What WPMAM does with the payload

The payload is POSTed to the WPMAM publish endpoint, which feeds it into Fastlane on WPMAM’s CI. Specific keys WPMAM understands (Info.plist entries, AndroidManifest entries, gradle properties, custom URL schemes, build settings) are documented on the WPMAM side. Coordinate with the build pipeline team before introducing new keys — adding a key that WPMAM doesn’t recognize is a no-op.


When this filter fires

Once per Submit Publish Request click. Fire-and-forget — the build runs async on WPMAM’s CI; status is polled separately.


Gotchas

  • Coordinate new keys with WPMAM. Adding a key here without server-side support is a no-op.
  • Don’t override the persisted publish-app options here. Edit them in Mobile App Manager → Publish Your App and let the page rebuild the payload. This filter is for additive injection.
  • Frozen contract. This is the only extension point for the publish payload. Don’t try to intercept the HTTP POST or modify options post-save.
  • Fires on every publish. A subscriber that pulls a value from a slow source (HTTP, expensive DB) blocks the submit.
  • $settings['ios_extra_plist'] may not exist until your subscriber adds it. Always ?? array().

  • Recipe: Publish your app to iOS and Android
  • Integration: WPMAM publishing pipeline
  • Frozen public contracts reference

Metadata

Field Value
Article type Hook Reference
Plugin slug mam-main
Applies to plugin version 2.1.11+
Hook type filter
Audience PHP developer
Frozen contract yes — the only publish-payload extension point
Last verified 2026-05-02
Contents

    Need Support?

    Can’t find the answer you’re looking for? Don’t worry we’re here to help!