`, HTTP Basic with the API token as user). * * - POST /subscribers {subscribers: [{email, first_name, last_name, tags, custom_fields}]} (create or update) * Drip has no list to pick: segmentation is done with tags. */ final class Drip extends EmailProvider { public function id(): string { return 'drip'; } public function label(): string { return 'Drip'; } public function configured(): bool { return Credentials::has('drip_account_id') && Credentials::has('drip_api_token'); } public function needs_list(): bool { return false; } public function base(): string { return 'https://api.getdrip.com/v2/' . rawurlencode(Credentials::get('drip_account_id')); } public function lists() { return []; } public function subscribe(array $contact) { $sub = ['email' => $contact['email']]; if ($contact['first_name'] !== '') { $sub['first_name'] = $contact['first_name']; } if ($contact['last_name'] !== '') { $sub['last_name'] = $contact['last_name']; } if ($contact['tags']) { $sub['tags'] = $contact['tags']; } if ($contact['fields']) { $sub['custom_fields'] = $contact['fields']; } $r = Http::json('POST', $this->base() . '/subscribers', ['subscribers' => [$sub]], [ 'Authorization' => self::basic(Credentials::get('drip_api_token'), ''), ]); return $r instanceof WP_Error ? $r : true; } }