{"id":379429,"date":"2026-10-01T13:18:18","date_gmt":"2026-10-01T13:18:18","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/merkeq-relay\/"},"modified":"2026-10-01T13:17:59","modified_gmt":"2026-10-01T13:17:59","slug":"merkeq-relay","status":"publish","type":"plugin","link":"https:\/\/fr-ca.wordpress.org\/plugins\/merkeq-relay\/","author":23578065,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.1.1","stable_tag":"0.1.1","tested":"7.1.2","requires":"6.6","requires_php":"8.2","requires_plugins":null,"header_name":"MerkEQ Relay","header_author":"MerkEQ","header_description":"Observable Relay-owned outbound webhook delivery for WordPress.","assets_banners_color":"","last_updated":"2026-10-01 13:17:59","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":34,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.1.1":{"tag":"0.1.1","author":"merkeq","date":"2026-10-01 13:17:59","revision":3723204}},"upgrade_notice":[],"ratings":[],"assets_icons":[],"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0.1.1"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[4932,23519,947,15439,34953],"plugin_category":[],"plugin_contributors":[283893],"plugin_business_model":[],"class_list":["post-379429","plugin","type-plugin","status-publish","hentry","plugin_tags-developer-tools","plugin_tags-diagnostics","plugin_tags-http","plugin_tags-webhook","plugin_tags-webhooks","plugin_contributors-merkeq","plugin_committers-merkeq"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/s.w.org\/plugins\/geopattern-icon\/merkeq-relay.svg","icon_2x":false,"generated":true},"screenshots":[],"raw_content":"<!--section=description-->\n<p>MerkEQ Relay records Relay-owned outbound webhook attempts so a WordPress administrator can see whether a destination accepted a request, how long it took, and why a failure occurred.<\/p>\n\n<p>The built-in Manual Test Delivery screen sends one fixed JSON test request to a public HTTPS destination. It is intended to test endpoint reachability and response behaviour. A successful HTTP response does not prove that the receiving service completed its downstream business process.<\/p>\n\n<p>Relay also provides the <code>merkeq_relay_send()<\/code> PHP API for a plugin or custom integration that needs observable outbound delivery.<\/p>\n\n<h4>Privacy and data handling<\/h4>\n\n<p>Relay stores only bounded operational metadata for seven days: a redacted destination display, destination host, method, time, HTTP result where available, duration, and failure category. It does not store request payloads, request headers, authentication values, cookies, signatures, query values, or Manual Test Delivery data.<\/p>\n\n<h4>External services<\/h4>\n\n<p>Relay sends an HTTPS request only when an administrator uses Manual Test Delivery or when installed code explicitly calls the Relay API. The request is sent to the destination selected by that administrator or integration so that the destination can receive and respond to the webhook. Relay sends the configured request data, its <code>MerkEQ Relay<\/code> user agent, and the WordPress site's home URL in that user agent. Relay does not send data to a MerkEQ-operated service and does not perform tracking.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>In WordPress Admin, go to Plugins &gt; Add New &gt; Upload Plugin.<\/li>\n<li>Upload the MerkEQ Relay ZIP and activate it.<\/li>\n<li>Open Relay in the WordPress Admin menu.<\/li>\n<li>Use Send test delivery with a public HTTPS endpoint, then inspect the recorded result.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20a%20successful%20result%20prove%20my%20integration%20completed%3F\"><h3>Does a successful result prove my integration completed?<\/h3><\/dt>\n<dd><p>No. It proves only that the destination returned a successful HTTP response to this delivery.<\/p><\/dd>\n<dt id=\"can%20i%20save%20a%20webhook%20endpoint%20or%20api%20key%3F\"><h3>Can I save a webhook endpoint or API key?<\/h3><\/dt>\n<dd><p>No. The Manual Test Delivery flow stores no webhook configuration or credentials.<\/p><\/dd>\n<dt id=\"does%20relay%20retry%20or%20replay%20failed%20requests%3F\"><h3>Does Relay retry or replay failed requests?<\/h3><\/dt>\n<dd><p>No. Automatic retry and replay are not part of this release.<\/p><\/dd>\n<dt id=\"what%20destinations%20are%20allowed%3F\"><h3>What destinations are allowed?<\/h3><\/dt>\n<dd><p>Only public HTTPS destinations. Relay rejects loopback, private, link-local, reserved, malformed, and embedded-credential URLs.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.1.1<\/h4>\n\n<ul>\n<li>Prepared the WordPress.org submission candidate with current WordPress compatibility verification and standards-only cleanup.<\/li>\n<\/ul>\n\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>Added observable Relay-owned outbound delivery and admin history.<\/li>\n<li>Added failure explanations, SSRF controls, TLS verification, and seven-day metadata retention.<\/li>\n<li>Added one fixed, manual test delivery for WordPress administrators.<\/li>\n<\/ul>","raw_excerpt":"Observe Relay-owned outbound webhook deliveries without storing payloads or credentials.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/fr-ca.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/379429","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fr-ca.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/fr-ca.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/fr-ca.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=379429"}],"author":[{"embeddable":true,"href":"https:\/\/fr-ca.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/merkeq"}],"wp:attachment":[{"href":"https:\/\/fr-ca.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=379429"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/fr-ca.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=379429"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/fr-ca.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=379429"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/fr-ca.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=379429"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/fr-ca.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=379429"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/fr-ca.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=379429"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}