WordPress Email & Viber Newsletter Plugin

Job ID: 39967350

Budget: $200 – $3,000 USD

​1. Project Overview
​Plugin Name: (Suggested) Auto-Post Publisher (Newsletter & Viber)
Objective: To create a WordPress plugin that allows administrators to schedule the automatic sending of the 'n' latest posts from a specific category or tag to a Viber Channel and a Newsletter list (via SendGrid).
​2. Core Functionality
​The plugin will execute the following two main actions based on a schedule:
​A. Cron Job Function (Scheduling)
​The plugin will use WP-Cron (WordPress's built-in scheduling system) to regularly check (e.g., every hour) if there is a scheduled task to run.
​It will register up to 7 different sending profiles (slots).
​When the current time and day match an enabled sending profile, the plugin will trigger the content retrieval and sending functions.
​B. Post Collection & Sending
​For each enabled sending profile that is executed:
​Post Query: The plugin will execute a WP_Query on the database to retrieve the 'n' most recent published posts (post type: 'post') that match the selected Category or Tag.
​Data Formatting: It will collect (for each post):
​Title (Post Title)
​Permanent Link (Permalink)
​Featured Image URL
​(Optional) Short Description (Excerpt)
​Execute Send (Newsletter): If the Newsletter sending is active for this profile, it will send the data to the SendGrid API.
​Execute Send (Viber): If the Viber sending is active for this profile, it will send the data to the Viber API.
​3. Admin Interface
​A new settings page will be created in the WordPress admin menu (e.g., "Settings" > "Auto-Post Publisher"). This page will include two main tabs:
​Tab 1: API Settings (API Keys)
​This tab will contain the fields for connecting to third-party services:
​SendGrid Settings:
​SendGrid API Key (Text field, password type)
​Sender Email
​Sender Name (Text field, e.g., "Our News")
​SendGrid List ID (Text field - The ID of the contact list in SendGrid where the campaign will be sent)
​Viber Settings:
​Viber API Authentication Token (Text field, password type)
​Viber Channel ID / Sender Name (Text field - The identifier of the channel/bot that will send the message)
​Tab 2: Sending Schedule
​This tab will contain 7 distinct "slots" (profiles) for sending. Each slot will have the following settings:
​Sending Profile [1-7]
​Enable Profile (Checkbox - "Run this schedule?")
​When:
​Day of Sending (Dropdown: Monday, Tuesday, ..., Sunday)
​Time of Sending (Dropdown: 00:00, 01:00, ..., 23:00)
​What (Content):
​Content Source (Dropdown: "Category" or "Tag")
​Select Category/Tag (A dynamic field that, depending on the above selection, will display a dropdown with all available categories or tags of the site)
​Number of Posts (Number input, e.g., "5" - for the 'n' latest posts)
​Where (Channels):
​Send Newsletter (SendGrid) (Checkbox)
​Send to Viber Channel (Checkbox)
​4. Technical Implementation Details
​A. Data Storage
​All settings (API keys and the 7 sending profiles) will be stored in the wp_options table, using the WordPress Settings API for security and standardization.
​B. Cron Job Logic
​Upon plugin activation, a custom WP-Cron event will be scheduled (e.g., hourly or daily).
​The function called by the cron will retrieve all sending profiles.
​It will check the enabled profiles and compare the current day/time (in server time or WordPress time) with the saved time/day of the profile.
​To avoid duplicate sends, the plugin must store (e.g., in transients or post_meta) the timestamp of the last execution for each profile.
​C. API Communication
​All calls to external APIs (SendGrid, Viber) must be made "server-side" using WordPress's wp_remote_post() or wp_remote_get() functions.
​SendGrid: The call will target the /v3/mail/send endpoint. The body of the call will contain the email HTML (which will be generated dynamically, e.g., a <ul> list with the posts) and the List ID.
​Viber: The call will target the /pa/post endpoint. The body of the call will contain the messages.
​Note: To send 'n' posts, it may be preferable to send 'n' separate messages (e.g., "Post Title" + "Link" + "Featured Image") rather than one large "carousel" message, which is more complex. This should be clarified based on the capabilities of the specific Viber API being used.
​D. Security
​All settings saved must be sanitized.
​All data displayed in the admin panel must be escaped.
​API keys must never be exposed on the client-side (frontend).
​5. Deliverables
​A .zip file containing the ready-to-install WordPress plugin.
​The plugin must adhere to WordPress Coding Standards.
​Basic documentation (readme.txt file) explaining how to use the settings page.