# Manage Users Source: https://docs.campaigncleaner.com/account-info/manage-users Effectively manage your users with Campaign Cleaner. Gain control over user permissions, roles, and settings, ensuring team collaboration and security. # User Management And Roles [Campaign Cleaner](https://campaigncleaner.com) provides you the capability to include additional users in your account to assist in the management and enhancement of your campaigns. We designate two roles: `administrators` and `users`.  **Administrators**, fundamentally, have complete access and control over the account. This includes the ability to purchase and cancel subscriptions, create API Keys, view invoices, manage users, among other tasks. **Users**, on the other hand, have more limited access. They can optimize any campaigns, manage the CDN and utilize the API Keys allocated to them. # Securing Your Account Source: https://docs.campaigncleaner.com/account-info/securing-your-account Discover comprehensive security measures, easy-to-follow guidelines, and advanced tools to safeguard your account against unauthorized access. ## Account Creation Process [Campaign Cleaner](https://campaigncleaner.com) provides two methods for creating an account: 1. **Email and Password** - A password of a minimum length of 8 characters is required, although we recommend using at least 12 characters, combining uppercase and lowercase letters, numbers, and special characters. All password are stored salted and one-way hashed with a high PBKDF2 iteration count. 2. **Sign in with Google** - Google manages the authentication process, disclosing only your email address and account name to us. Since Google is responsible for authentication, you won't be able to alter your password or set up TOTP 2FA through our system. However, you can make these changes within your Google account. ## TOTP 2FA (Two Factor Authentication) You have the choice to activate `TOTP 2FA` for enhanced security. We recommend turning this option one. You can use your favorite TOTP program like Google Authenticator, Authy, and others. Should you initially sign up with a email/password account and later opt to use Sign In With Google, your account will be transitioned to a Google sign-in account, if the email address matches. You will no longer have the ability to log in using email and password. If you signed in with Google and want to revoke access to Campaign Cleaner, you can do that in your google account under `security -> Signing in to other sites -> Sign in with Google`. Revoking access doesn't delete your account, it will just make you grant access to Campaign Cleaner to sign in again. ## Deleting your Account You can delete your account under Account Info -> Settings. # Create Inbox Test Source: https://docs.campaigncleaner.com/api-reference/endpoint/create-inbox-test POST /v1/create_inbox_test The **create_inbox_test** API allows you to create a new inbox placement test. Once created, you will receive a list of seed email addresses to send your campaign to. After sending your campaign to all addresses in the **send_to** list, you can use the **get_inbox_test_results** API to retrieve the placement results. This endpoint requires an active Campaign Cleaner subscription or a standalone Inbox Placement Tester subscription. One API credit will be deducted per test created. #### Header: **X-CC-API-Key**: Your API Key #### Request Body: _Required:_ - **test_name**: The name of your inbox test - maximum 80 characters. #### Response: - **job_id**: The unique ID of the inbox test, used to retrieve results via the **get_inbox_test_results** API. - **test_name**: The name you provided for the test. - **mailtester_address**: The unique monitoring address that must be included in your send list. This is already included in the **send_to** array. - **instructions**: A description of what to do next. - **send_to**: An array of all seed email addresses including the **mailtester_address**. Send your campaign to every address in this list. In the event of an error, you will get an "**error**:" response with a description of the reason. # Delete Campaign Source: https://docs.campaigncleaner.com/api-reference/endpoint/delete-campaign POST /v1/delete_campaign The **delete_campaign** API permanently deletes one of your saved campaigns, including its analysis. This can't be undone. #### Header: **X-CC-API-Key**: Your API Key #### Request Body: _Required:_ **campaign**: - **id**: The campaign id returned by **send_campaign** or **get_campaign_list**. #### Response: - **status**: "success" when the campaign was deleted. If the campaign id doesn't exist on your account, you will get "**error**": "campaign not found". Missing or malformed JSON, or a missing or invalid API key, returns an "**error**:" response with a description of the reason and the header **X-CC-Status: 4001**. # Get Campaign Source: https://docs.campaigncleaner.com/api-reference/endpoint/get-campaign POST /v1/get_campaign The **get_campaign** API allows you to retrieve any of your Saved Campaigns in [Campaign Cleaner](https://campaigncleaner.com). The response below is a real example of a newsletter that "Postman" sent us, overall it's a pretty good newsletter with a few issues, mainly image size and a couple of broken links. #### Header: **X-CC-API-Key**: Your API Key #### Request Body: _Required:_ **campaign**: - **id**: The campaign id that will be used in other API calls. _Optional:_ **campaign**: - **minimize_html**: (true/false) If true (default), removes all whitespace, tabs, etc. Condensing the HTML. #### Response: **campaign:** - **adjust_font_colors**: (true/false), If true, certain bright colors are spam triggers, like "**red**" or "**#FF0000**", was adjusted to a slightly different color like "**#FF0101"**, it will look the same, but won't trigger some spam filters. - **adjust_font_size**: (true/false) If true, The min and max font size defined below in pixels were applied. If your newsletter contains larger or small font's it was adjusted to the min/max you define. - **all_capitalized_word_ratio**: (double) The ratio of all capitalized words to total words in your campaign. - **all_capitalized_words**: (integer) The number of capitalized words found in your campaign. - **all_capitalized_word_max_acceptable_ratio**: (double) The max acceptable ratio of all capitalize words to total words in your campaign. - **all_link_list:** (list of links) All the links found in the campaign (images, text, etc.) - **link_url**: (string) The URL or location of the broken link. - **link_status**: (string) The status code of the link, please view the status guide below. - **link_redirected_url**: (string) The location of where the link was redirected to, empty string, if it wasn't redirected. - **link_is_image**: (true/false) True, if the link is used as an image. - **link_is_broken**: (true/false) True, if the link was non-functional at the time of the scan. - **link_initial**: (true/false) True, if the link was the initial link in the campaign, not an intermediate or final link, if redirected. - **link_count**: (integer) The number of times this link was found. - **link_secure:** (true/false) true, if the link is HTTPS. - **link_tel:** (true/false) true, if the link is tel: - **link_mailto:** (true/false) true, if the link is mailto: - **bg_images_found**: (integer) The number of background images found, some major email clients don't support background images. - **bg_image_list**: (List of images) All the background images found - **image_url**: (string) The URL of where the image is located. - **image_size** (long) The size of the image in Kilobytes (KB) - **image_width**: (integer) The width of the image. - **image_height**: (integer) The height of the image. - **image_rendered_width**: (integer) The rendered width of the image. - **image_rendered_height**: (integer) The rendered height of the image. - **image_background**: (true/false) Will always be true, since this is a background image. - **image_type**: (Integer) 1=png, 2=jpeg, 3=gif, 4=bmp, 5=svg, 6=avif, 7=tif, 8=webp, 9=apng, 10=heic, 11=icon, 12=base64, -1=Unknown - **blacklisted_links**: (list of blacklisted links) Links that are on blacklists and their properties. - **bl_url**: (string) The web address where the blacklist is located. - **bl_name**: (string) The name of the blacklist - **link_url**: (string) The link in the campaign that is on a blacklist, can be a redirected link. - **blacklisted_links_found**: (integer) The total number of blacklisted links found. - **broken_links**: (list of links) All the broken links found in the campaign. - **link_url**: (string) The URL or location of the broken link. - **link_status**: (string) The reason why the link was considered broken, please view the status guide below. - **link_redirected_url**: (string) The location of where the link was redirected to, empty string, if it wasn't redirected. - **link_is_image**: (true/false) true, if the link is used as an image. - **link_is_broken**: (true/false) true, if the link was non-functional at the time of the scan. - **link_initial**: (true/false) true, if the link was the initial link in the campaign, not an intermediate or final link, if redirected. - **link_count**: (integer) The number of times this link was found. - **link_secure:** (true/false) true, if the link is HTTPS. - **link_tel:** (true/false) true, if the link is tel: - **link_mailto:** (true/false) true, if the link is mailto: - **campaign_id**: The campaign id that will be used in other API calls. - **campaign_html:** (string) The adjusted HTML of the campaign, with all the fixes that were selected. - **campaign_name**: (string) The name the campaign was saved with. - **campaign_summary**: (list of messages) A quick summary of some of the changes that were applied and some analysis highlights. - **apply_count**: (true/false) If true, the count column apples to the message as the number of occurrences found. If false, the count will be zero, and the message is a statement of what happened. - **count**: (integer) The total occurrences that was found or corrected. - **html_changed**: (true/false) Indicates if the Campaign HTML was changed to correct the issue. - **message**: (string) The change or analysis that took place that indicating something change or something should be looked into further. - **convert_h_to_p_tags**: (true/false) If true, this will change all the H tags to P tags and set the correct font-size. - **convert_tables_to_divs:** (true/false) **\-** This is an experimental feature to convert all the tables to divs, in certain instances with a complicated table structure you might need to edit the HTML. We recommend leaving this as false or not setting it. - **custom_info**: The values you passed us when calling the **send_campaign** API - **domains_scanned**: (array of strings) The domains that were scanned at different blacklists. - **header_tags_count**: (integer) The number of header tags found in the campaign, header tags displays are not consistent across email clients, use "**div**" or "**p**" tags styled correctly instead. - **host_extensionless_images:** (true/**false**) If true, images without extensions will be hosted on our CDN when the **resize_and_host** parameter is set to true. Typically, dynamically generated images lack extensions, though there are exceptions. - **inline_css:** (**true**/false) When set to true, CSS styles are directly applied within the style attribute of each HTML element. - **inline_css_important:** (true/**false**) When set to true, the `!important` flag will also be inlined with CSS styles. If you are using media queries, it is generally recommended to keep this set to false. - **media_queries_important:** (**true**/false) When set to true, all media query styles will be marked with the `!important` flag. This ensures they can override any inline CSS without an `!important` flag. - **image_count**: (integer) The total number of images found in your campaign including background images. - **image_max_width**: (integer): The max-width style applied to all images in pixels. - **images_missing_alt_attribute:** (integer) The number of images missing or have an empty **"alt"** attribute. - **image_list**: (list of images) A list of all images found and their properties. - **image_url**: (string) The URL of where the image is located. - **image_size** (long) The size of the image in Kilobytes (KB) - **image_width**: (integer) The width of the image. - **image_height**: (integer) The height of the image. - **image_background**: (true/false) True, if this is a background image, otherwise - **image_type**: (Integer) 1=png, 2=jpeg, 3=gif, 4=bmp, 5=svg, 6=avif, 7=tif, 8=webp, 9=apng, 10=heic, 11=icon, 12=base64, -1=Unknown - **image_rendered_width**: (integer) The rendered width of the image. - **image_rendered_height**: (integer) The rendered height of the image. - **links_missing_title_attribute** : (integer) The number of links missing the **"title"** attribute. - **links_scanned**: (integer) The total number of links scanned, images, text, and redirects. - **os_images_found**: (integer) The number of oversized images found in your campaign, slowing down the loading of your campaign. - **pd_cdn_list**: (List of links on Poor delivery CDNs) Links that point to CDNs that are known to affect delivery. - **pd_cdn_name**: (string) The name of the CDN that can affect delivery. - **pd_cdn_url**: (string) The URL or Location the CDN uses to host content. - **min_font_size_allowed**: (A positive Integer, under 100) in pixels. - **max_font_size_allowed**: (A positive Integer under 100) in pixels. - **os_image_list**:(list of images) All the oversized images in the campaign - **image_url**: (string) The URL of where the image is located. - **image_size** (long) The size of the image in Kilobytes (KB) - **image_width**: (integer) The width of the image. - **image_height**: (integer) The height of the image. - **image_background**: (true/false) True, if this is a background image, otherwise false. - **image_type**: (Integer) 1=png, 2=jpeg, 3=gif, 4=bmp, 5=svg, 6=avif, 7=tif, 8=webp, 9=apng, 10=heic, 11=icon, 12=base64, -1=Unknown - **image_rendered_width**: (integer) The rendered width of the image. - **image_rendered_height**: (integer) The rendered height of the image. - **pd_cdns_found**: (integer) The number of content delivery networks found, known to cause adverse delivery issues. - **pd_cdns_link_count**: (integer) The total number of links pointed to content delivery networks know to cause adverse delivery issues. - **preserve_media_queries**: (true/false) True, if all media queries were preserved. - **relative_links_base_url**: If set, this needs to be a full base URL like "[https://campaigncleaner.com/"](https://campaigncleaner.com/), if your email campaign has any relative paths, it will be converted to an absolute URL. In most instances, you won't need to set this. - **remove_successive_punctuation**: (true/false) if true, this will remove successive punctuation like ..., !!!!, $$$ to a single occurrence. - **remove_css_inheritance**: (true/false) If true, removes all elements of CSS that are inherited. Once CSS is inlined, the inherited CSS will be removed, for example if font-size of a parent tag is 15 pixels, there is no need for the font-size of the child tag to be specified as 15 pixels because it's inherited or computed from the parent tag, this reduces the size of your HTML Campaign. - **remove_classes_and_ids**: (_true_/false) If true, all the class and ID attributes after CSS Inlining was removed. - **remove_comments**: (true/false) If true, comments were stripped from both CSS and HTML. Comments are invisible in HTML and can trigger spam filters. - **remove_control_non_printable:** (true/false) If True, all non-printable and control characters are removed. - **remove_image_height:** (true/false) if true, the height style was removed from all images, preventing any image distortions. - **remove_large_widths_over**: (integer) Experimental: If sets removes all defined widths over the value set on non images and table tags. - **replace_diacritics**: (true/false) If true, diacritic characters like á were replaced with a normal characters equivalent. - **replace_non_ascii_characters**: (true/false) If true, all non-ascii characters were replaced with their ascii equivalent. For example, a curly quote (“) was replaced with a straight quote ("). Non-ascii characters are one of the major spam triggers. - **resize_and_host**: (true/false) If true, all eligible images were resized, converted, and hosted on our CDN. Read more about this here: [Resize And Host](https://docs.campaigncleaner.com/features-settings/resize-and-host) - **spam_words_count**: (integer) The total number of spam words found in your campaign. - **spam_keyword_list**: (List of Spam Keywords) (keyword (string), count (integer) Array of all spam keywords found and the number of times they were found. - **keyword**: The spam Keyword or phrase. - **count**: The number of occurrences of the spam keyword. - **spam_keyword_ratio**: (double) The spam keyword ratio of the campaign. - **spam_keyword_max_acceptable_ratio**: (double) The max acceptable ratio for spam keywords for any campaign. - **successive_currency_marks**: (integer) The number of successive currency marks found "$$". - **successive_exclaimations**: (integer) The number of successive exclamation points found "!!". - **successive_question_marks**: (integer) The number of successive question marks found "??". - **successive_periods**: (integer) The number of successive periods found "..". - **surrounding_div**: A surrounding "div" added to your html with the following styles added. - **max_width**: The max-width style in pixels applied to the surrounding "div". - **text_align**: (left, center, right) All content within the surrounding "div" will be aligned according to the specified style. However, this can be over-written but setting "text-align" property on inner tags within the "div" to customize the appearance of your email. - **font_size**: The pixel size that set in the surrounding div to adhere to, this adds an "!important" to all font-sizes that are set on any tag in the HTML to maintain the font you want. While setting all unspecified font sizes to the size you choose. - **center_to_parent**: (true/false) If true, this will enable the surrounding "div" to be centered in any parent tags in which it is placed. This is particularly helpful when inserting an HTML snippet into a template - **text_link_max_acceptable_ratio**: (double) the max acceptable text to link ratio for any campaign. - **text_link_ratio**: (double) The text to link ratio of your campaign. - **text_image_max_acceptable_ratio**: (double) the max acceptable text to image ratio for any campaign. - **text_image_ratio**: (double) The text to image ratio of your campaign. - **total_word_count**: (integer) The total number of words found in your campaign. #### Additional Information: **HTTP Status Codes:** [https://developer.mozilla.org/en-US/docs/Web/HTTP/Status](https://developer.mozilla.org/en-US/docs/Web/HTTP/StatusIn) In addition to status codes listed in the document above. | **Status Code** | **Description** | | --- | --- | | 97 | Telephone Links start with tel: | | 98 | Email links, starts with mailto: | | 99 | Invalid URL - The provided website address is not valid. It may be a partial address, missing the necessary protocols (http or https), or has an incorrect format. | # Get Campaign List Source: https://docs.campaigncleaner.com/api-reference/endpoint/get-campaign-list GET /v1/get_campaign_list The **get_campaign_list** API endpoint allows you to get the status of all the campaigns you have saved on [Campaign Cleaner](https://campaigncleaner.com). #### Header: **X-CC-API-Key**: Your API Key #### Response: **campaign_list**: - **id**: The campaign id that will be used in other API calls. - **campaign_name**: The name of the campaign. - **status**: The status will be either _processing_, _completed_, or _paused_ - **date_added**: The date and time your campaign was saved or submitted to Campaign Cleaner. If the **status** is _completed_, you will be able to retrieve the campaign via the **get_campaign** API In the event of an error, you will get an "**error**:" response, with a description of the reason # Get Campaign PDF Analysis Source: https://docs.campaigncleaner.com/api-reference/endpoint/get-campaign-pdf-analysis POST /v1/get_campaign_pdf_analysis The **get_campaign_pdf_analysis** API allows you to retrieve the analysis report for any of your Saved Campaigns in Campaign Cleaner. #### Header: **X-CC-API-Key**: Your API Key #### Request Body: **campaign**: - **id**: The campaign id that will be used in other API calls. #### Response: An Application/pdf stream. # Get Campaign Status Source: https://docs.campaigncleaner.com/api-reference/endpoint/get-campaign-status POST /v1/get_campaign_status After submitting a campaign to be corrected and analyzed it can take up to a minute to finalize the results. You can check the status of your campaign with the **get_campaign_status** API. When you see a 'completed' status, you can call the **get_campaign** API to retrieve the results. #### Header: **X-CC-API-Key**: Your API Key #### Request Body: **campaign**: - **id**: The Campaign ID that you want to get the status for. #### Response: **campaign_list**: - **id**: The campaign id that will be used in other API calls. - **campaign_name**: The name of the campaign. - **status**: The status will be either _processing_, _completed_, or _paused_ - **date_added**: The date and time your campaign was saved or submitted to [Campaign Cleaner](https://campaigncleaner.com). If the **status** is _completed_, you will be able to retrieve the campaign via the **get_campaign** API In the event of an error, you will get an "**error**:" response, with a description of the reason # Get Credits Source: https://docs.campaigncleaner.com/api-reference/endpoint/get-credits GET /v1/get_credits The **get_credits** API will show you how many credits you currently have available. Credits are consumed by calling the **send_campaign** API endpoint (1 credit per campaign) and the **create_inbox_test** API endpoint (1 credit per test). Inbox Placement Monitor endpoints don't use credits. #### Response: - **Credits**: The amount of available credits you have on your account. In the event of any other error, you will get an "**error**:" response, with a description of the reason. # Get Inbox Test Results Source: https://docs.campaigncleaner.com/api-reference/endpoint/get-inbox-test-results POST /v1/get_inbox_test_results The **get_inbox_test_results** API allows you to retrieve the placement results for an inbox test created via the **create_inbox_test** API. Results are populated as seed mailboxes receive your campaign, so you may call this endpoint multiple times until the **status** is _Completed_. A **status** of _Processing_ means not all seed mailboxes have received your campaign yet. Check back in a few minutes. If some seeds never receive the email, the **status** will remain _Processing_ — ensure your campaign was sent to all addresses in the **send_to** list. #### Header: **X-CC-API-Key**: Your API Key #### Request Body: _Required:_ - **job_id**: The job ID returned from the **create_inbox_test** API. #### Response: - **job_id**: The unique ID of the inbox test. - **test_name**: The name of the inbox test. - **submitted_date**: The date and time the test was created. - **submitted_by**: The email address of the account that created the test. - **status**: Either _Processing_ or _Completed_. - **summary**: A high-level breakdown of results. - **total_seeds**: The total number of seed mailboxes in the test. - **received**: The number of seeds that have received the campaign so far. - **inbox**: The number of seeds where the campaign landed in the primary inbox. - **category**: The number of seeds where the campaign landed in a tab or category such as Newsletter, Promotions, Forums, Social, or Updates. These are considered inbox placements but not the primary inbox. - **spam**: The number of seeds where the campaign landed in the spam or junk folder. - **pending**: The number of seeds still waiting to receive the campaign. - **inbox_rate**: The percentage of total seeds where the campaign landed in the primary inbox. - **category_rate**: The percentage of total seeds where the campaign landed in a tab or category folder. - **spam_rate**: The percentage of total seeds where the campaign landed in spam. - **results**: A detailed per-seed breakdown. - **provider**: The email provider name (e.g. Google - Gmail, Microsoft - Hotmail Outlook, Verizon - Yahoo AOL, Apple - iCloud). - **seed_address**: The seed email address. - **email_found**: (true/false) Whether the campaign was received by this seed. - **placement**: Where the campaign landed. Possible values are Inbox, Spam, Inbox - Newsletter, Inbox - Promotions, Inbox - Forums, Inbox - Social, Inbox - Updates, or Pending. - **spf_status**: The SPF authentication result for this seed. - **sender_ip**: The IP address the campaign was sent from. - **submission_result**: Additional detail about the submission result for this seed. Primarily used for Microsoft seeds e.g. Clean - No Threats Found. In the event of an error, you will get an "**error**:" response with a description of the reason. # Add Monitor Domain Source: https://docs.campaigncleaner.com/api-reference/endpoint/monitor-add-domain POST /v1/monitor_add_domain The **monitor_add_domain** API adds a domain to your account. Publish the returned DNS TXT record, then call **monitor_verify_domain**. Freemail and shared sending domains (gmail.com, sendgrid.net, ...) can't be added. Requires an active plan that includes Inbox Placement Monitor. API keys created by a team member with the **User** role can't make changes. Limit: 20 domains added an hour. #### Header: **X-CC-API-Key**: Your API Key #### Request Body: _Required:_ - **domain**: The domain you send **From**, e.g. example.com. _Optional:_ - **alerts_only**: (true/**false**) True to verify the domain only so alerts can be sent to addresses at it (e.g. your company domain). #### Response (201): - **domain**: The new domain (same fields as **monitor_get_domains**), including the **dns_record** to publish. - **next_step**: What to do next. # Delete Monitor Alert Source: https://docs.campaigncleaner.com/api-reference/endpoint/monitor-delete-alert POST /v1/monitor_delete_alert The **monitor_delete_alert** API deletes an alert and its alert history. Requires an active plan that includes Inbox Placement Monitor and a role other than **User**. #### Header: **X-CC-API-Key**: Your API Key #### Request Body: _Required:_ - **alert_id**: The alert to delete. # Get Monitor Alerts Source: https://docs.campaigncleaner.com/api-reference/endpoint/monitor-get-alerts GET /v1/monitor_get_alerts The **monitor_get_alerts** API returns your alert rules and the 50 most recent alerts. Each problem is reported once per domain and provider and is resolved when mail lands in the inbox again. #### Header: **X-CC-API-Key**: Your API Key #### Response: - **alerts**: Your alert rules (fields as in **monitor_save_alert**, plus **alert_id** and **description**). Each recipient has **receiving** (false when the address no longer qualifies, e.g. the person left your team; the account owner gets those alerts instead). - **recent**: **event_id**, **alert_id**, **kind**, **status** (_open_/_resolved_), **domain**, **provider**, **provider_key**, **message_count**, **detail**, **opened_at**, **last_seen_at**, **resolved_at**. - **account_owner_email**, **max_alerts**. # Get Monitor Domains Source: https://docs.campaigncleaner.com/api-reference/endpoint/monitor-get-domains GET /v1/monitor_get_domains The **monitor_get_domains** API lists the domains on your account, their verification status, and your limits. Only mail sent **From** a verified domain (or one of its subdomains) is recorded. #### Header: **X-CC-API-Key**: Your API Key #### Response: - **domains**: - **domain_id**: The ID used by the other domain endpoints. - **domain**: The domain name. - **purpose**: _monitor_ (mail sent from it is tracked) or _alerts_ (verified only so alerts can be sent to addresses at it, e.g. your company domain; it is not tracked and doesn't count toward your monitored domains). - **status**: _pending_ (publish the **dns_record**, then call **monitor_verify_domain**), _verified_, or _stopped_ (the DNS record was removed; remove the domain and add it again). - **created_at**, **verified_at**, **last_checked_at**: UTC times. - **message_count**: Messages stored for the domain (last 30 days). - **dns_record**: Only for _pending_ domains: **type** (TXT), **host** and **value** to publish. - **limits**: **monitored_domains_used**, **monitored_domains_max**, **alert_domains_used**, **alert_domains_max** (null = no limit). # Get Monitor Message Source: https://docs.campaigncleaner.com/api-reference/endpoint/monitor-get-message GET /v1/monitor_get_message The **monitor_get_message** API returns one stored message with its authentication details, selected headers and a text preview, and optionally the original message. #### Header: **X-CC-API-Key**: Your API Key #### Parameters: _Required:_ - **message_id**: From **monitor_get_messages**. _Optional:_ - **include_eml**: (true/**false**) Adds **eml_base64**, the original message (up to 10 MB). Limit: 10 a minute. #### Response: The fields from **monitor_get_messages**, plus **first_seen_at**, **last_seen_at**, **authentication.dkim_domain**, **sender_ip**, **preview** (first 300 characters of text), **headers** (selected headers) and **has_eml**. # Get Monitor Messages Source: https://docs.campaigncleaner.com/api-reference/endpoint/monitor-get-messages GET /v1/monitor_get_messages The **monitor_get_messages** API returns every stored copy of your mail that reached a seed, newest first, with where it landed and its authentication results. Messages are kept for 30 days. Parameters can be sent in the query string, or in a JSON body with POST. #### Header: **X-CC-API-Key**: Your API Key #### Parameters (all optional): - **domain_id**: Only this monitored domain (default: all verified domains). - **provider_key**: Only this provider (values from **monitor_get_seeds**). - **placement**: Inbox, Spam, Promotions, Social, Updates, Newsletter, Announcements, Forums or Other. - **days**: 1 to 30, default 30. - **page**: 1-based, default 1. - **page_size**: 1 to 200, default 50. #### Response: - **page**, **page_size**, **total** - **messages**: - **message_id**: Use with **monitor_get_message**. - **domain_id**, **domain**: The monitored domain the message matched. - **from**, **subject** - **seed**, **provider**, **provider_key**: The seed it reached. - **placement**: Where it landed (normalized). - **folder**: The mailbox folder it was found in. - **received_at**: UTC time. - **authentication**: **passed** (true/false), **spf**, **dkim**, **dmarc**. # Get Monitor Seeds Source: https://docs.campaigncleaner.com/api-reference/endpoint/monitor-get-seeds GET /v1/monitor_get_seeds The **monitor_get_seeds** API returns the seed addresses for the Inbox Placement Monitor. Add these addresses to your normal sends as regular **To** recipients (not Cc or Bcc), sending from a verified domain, and every copy that reaches a seed is recorded with the folder it landed in. Available with an active plan that includes Inbox Placement Monitor (The Works or the Inbox Placement Tester plan), or to an account that has used Inbox Placement Monitor before. Inbox Placement Monitor calls don't use API credits. #### Header: **X-CC-API-Key**: Your API Key #### Response: - **count**: The number of seed addresses. - **seeds**: The seed addresses. - **address**: The seed email address. - **provider**: The mailbox provider (e.g. Gmail, Microsoft 365, Outlook.com / Hotmail, Yahoo). - **provider_key**: The value to use in filters for **monitor_get_messages** and alerts. #### Limits (all Inbox Placement Monitor endpoints): 60 calls a minute per account, 120 a minute per client IP. Above that you get HTTP **429** with a **Retry-After** header. In the event of an error, you will get an "**error**:" response with a description of the reason. # Get Monitor Placement Summary Source: https://docs.campaigncleaner.com/api-reference/endpoint/monitor-get-summary GET /v1/monitor_get_summary The **monitor_get_summary** API returns the inbox and spam rate overall and per provider. **inbox_rate** counts Gmail tabs (Promotions, Updates, ...) as inbox, like the dashboard. Rates are null when there is no mail. #### Header: **X-CC-API-Key**: Your API Key #### Parameters (all optional): - **days**: 1 to 365, default 30 (older days come from daily totals). - **domain_id**: Only this monitored domain. #### Response: - **overall** and each entry in **providers**: **total**, **inbox**, **tabs**, **spam**, **other**, **inbox_rate**, **spam_rate** (providers also have **provider** and **provider_key**). # Get Monitor Usage Source: https://docs.campaigncleaner.com/api-reference/endpoint/monitor-get-usage GET /v1/monitor_get_usage The **monitor_get_usage** API shows how many messages have been stored this billing period. Limits reset on your billing date (the 1st of the month, UTC, without a subscription). A null limit means unlimited. #### Header: **X-CC-API-Key**: Your API Key #### Response: - **messages_used**, **messages_limit**: Messages that passed authentication. - **failed_auth_used**, **failed_auth_limit**: Messages that failed SPF/DKIM/DMARC. - **not_stored**: Copies that arrived after a limit was reached. - **resets_at**: When the counters start again (UTC). # Remove Monitor Domain Source: https://docs.campaigncleaner.com/api-reference/endpoint/monitor-remove-domain POST /v1/monitor_remove_domain The **monitor_remove_domain** API removes a domain. Its stored messages and its alerts are deleted immediately and can't be recovered. Requires an active plan that includes Inbox Placement Monitor and a role other than **User**. #### Header: **X-CC-API-Key**: Your API Key #### Request Body: _Required:_ - **domain_id**: The ID of the domain to remove. # Save Monitor Alert Source: https://docs.campaigncleaner.com/api-reference/endpoint/monitor-save-alert POST /v1/monitor_save_alert The **monitor_save_alert** API creates an alert (no **alert_id**, returns 201) or replaces an existing one (**alert_id**, returns 200). Alerts can only go to the account owner, your team members, or an address at one of your verified domains (monitored or alert domains). To alert someone else, invite them to your team first. Requires an active plan that includes Inbox Placement Monitor and a role other than **User**. #### Header: **X-CC-API-Key**: Your API Key #### Request Body: _Required:_ - **kind**: _spam_ (lands in spam), _notinbox_ (spam, Gmail tabs or Outlook's Other folder), _rate_ (inbox rate drops below **threshold**) or _auth_ (SPF, DKIM or DMARC fails). _Optional:_ - **alert_id**: To update an existing alert. - **domain_id**: One monitored domain; leave out or 0 for all. - **provider_key**: One provider; leave out for all. - **threshold**: _rate_ only: inbox rate in % (1-100, default 80). - **min_messages**: _rate_ only: minimum messages in 24 hours before it can trigger (1-1000, default 5). - **delivery**: **instant** or _digest_ (once a day). - **recipients**: Array or comma separated string, up to 5. Empty sends to the account owner. - **enabled**: (**true**/false). #### Response: - **alert**: The saved alert, as in **monitor_get_alerts**. # Verify Monitor Domain Source: https://docs.campaigncleaner.com/api-reference/endpoint/monitor-verify-domain POST /v1/monitor_verify_domain The **monitor_verify_domain** API checks the DNS TXT record for a _pending_ domain. DNS changes can take a while to appear; if **verified** is false, try again later. Limit: 30 attempts an hour. Requires an active plan that includes Inbox Placement Monitor and a role other than **User**. #### Header: **X-CC-API-Key**: Your API Key #### Request Body: _Required:_ - **domain_id**: The ID from **monitor_add_domain** or **monitor_get_domains**. #### Response: - **verified**: (true/false) Whether the record was found. - **message**: A description of the result. - **domain**: The domain with its current status. # Send Campaign Source: https://docs.campaigncleaner.com/api-reference/endpoint/send-campaign POST /v1/send_campaign The **send_campaign** API Endpoint allows you to send in a campaign to be processed and analyzed by [Campaign Cleaner](https://campaigncleaner.com). Below is the list of settings that can be set, all optional settings, if not specified will default to the bold/italicized setting. All submitted campaigns will be sanitized. #### Header: **X-CC-API-Key**: Your API Key #### Request Body: _Required:_ **send_campaign**: - **campaign_html** : The full HTML of your campaign - **campaign_name**: The name of your campaign - campaign name must pass our sanitization checks. Campaigns are normally processed in under 2 minutes, in most instances in a few seconds. But in some cases with very large campaigns with lots of images and links it can take longer to check those links for blacklists, redirects. image sizes and more. Depending on the server where those links resources are located it can take longer. The send campaign, will return a campaign ID once we received it, you can use that campaign ID to check on the status, and retrieve your campaign when it's finished processing or you can supply us a webhook URL and we will send the results to you automatically. _Optional:_ **send_campaign**: - **adjust_font_colors**: (_**true**_/false), If true, certain bright colors are spam triggers, like "**red**" or "**#FF0000**", will be adjusted to a slightly different color like "**#FF0101"**, it will look the same, but won't trigger some spam filters. - **adjust_font_size**: (_**true**_/false) If true, you will be able to define the min and max font size allowed in pixels. If your newsletter contains larger or small font's it will adjust them to the min/max you define. - **convert_h_to_p_tags**: (true/**false**) If true, this will change all the H tags to P tags and set the correct font-size. - **convert_tables_to_divs:** (true/**false**) - This is an experimental feature to convert all the tables to divs, in certain instances with a complicated table structure you might need to edit the HTML. We recommend leaving this as false or not setting it. - **custom_info:** This field is for you to pass any additional data you want to send us, it will also be passed back to you when you call the get_campaign API. It's limited to 500 characters. - It must pass our sanitization checks. - **host_extensionless_images:** (true/**false**) If true, images without extensions will be hosted on our CDN when the resize_and_host parameter is set to true. - **inline_css:** (**true**/false) When set to true, CSS styles are directly applied within the style attribute of each HTML element. - **inline_css_important:** (true/**false**) When set to true, the !important flag will also be inlined with CSS styles. - **max_font_size_allowed**: (A positive Integer under 100) in pixels, default is 32. - **media_queries_important:** (**true**/false) When set to true, all media query styles will be marked with the !important flag. - **min_font_size_allowed**: (A positive Integer, under 100) in pixels, default is 10. - **preserve_media_queries**: (**true**/false) If true, all media queries will be preserved. - **relative_links_base_url**: If set, this needs to be a full base URL, if your email campaign has any relative paths, it will be converted to an absolute URL. - **remove_classes_and_ids**: (_**true**_/false) If true, all the class and ID attributes after CSS Inlining will be removed. - **remove_comments**: (**true**/false) If true, comments will be stripped from both CSS and HTML. - **remove_control_non_printable:** (true/**false**) If True, all non-printable and control characters are removed. - **remove_css_inheritance**: (**true**/false) If true, removes all elements of CSS that are inherited. - **remove_image_height:** (**true**/false) if true, the height style will be removed from all images. - **remove_large_widths_over**: (integer) Experimental: If set, removes all defined widths over the value set on non images and table tags. - **remove_successive_punctuation**: (**true**/false) if true, this will remove successive punctuation like ..., !!!!, $$$ to a single occurrence. - **replace_diacritics**: (**true**/false) If true, diacritic characters like á will be replaced with normal character equivalents. - **replace_non_ascii_characters**: (**true**/false) If true, all non-ascii characters will be replaced with their ascii equivalent. - **resize_and_host**: (**true**/false) If true, all eligible images will be resized, converted, and hosted on our CDN. - **set_image_max_width**: (integer) If set, applies a max-width style to all images in pixels. - **surrounding_div**: A surrounding div added to your html. - **max_width**: The max-width style in pixels applied to the surrounding div. - **text_align**: (left, center, right) Alignment of content within the div. - **font_size**: The pixel size set in the surrounding div. - **center_to_parent**: (true/false) If true, centers the div in any parent tags. - **webhook_url**: If provided, the results will be posted to this URL when processing is complete. Must be an absolute URL with no query string. # API Documentation Source: https://docs.campaigncleaner.com/api-reference/introduction We offer a robust collection of APIs to allow you to integrate its functionality into your email marketing software and tools. [Campaign Cleaner](https://campaigncleaner.com) is the leader in ensuring that your campaigns don't affect your IP and Domain reputation, it's the most advanced toolset you'll find that gives you all the tools you need to keep your campaigns within acceptable ratios of many email and spam filtering software and automatically fixes your HTML by sanitizing all non-email friendly attributes and inlines all your CSS to be compatible with every email client. We offer a robust collection of API's to allow you to integrate its functionality into your email marketing software and tools. The `{{api_key}}` is located in your account on [Campaign Cleaner](https://members.campaigncleaner.com) under API Management API Keys. > [!TIP] > > Use the navigation on the left to access the different **API Endpoints**. Or if you prefer we made our API Documentation available below. >  > > [Open](https://campaign-cleaner.github.io/swagger/) **API Documentation Links:** * [Swagger](https://campaign-cleaner.github.io/swagger/) # Campaign Analysis Source: https://docs.campaigncleaner.com/campaign-cleaner/campaign-analysis Email Campaign Analysis provides a powerful tool for email marketers to analyze and optimize their HTML code. # Understand Your Email Campaign Analysis The HTML Analysis tab is organized into 9 user-friendly sections, with highlighted areas of concern in orange, so you can quickly identify and optimize your email campaign. Each section includes an "info" button for more details. Let's take a closer look at these sections # Punctuation, Caps and H Tags  This section identifies common issues that can harm your email's deliverability by triggering spam filters. The ratios shown are the maximum recommended values, and it's always best to stay well below them. All-caps words and successive punctuation are among the most heavily weighted conditions that can land your emails in spam folders or promotions tabs. For more information about this section, please refer to the [Punctuation, Caps and H Tags](/features-settings/punctuation-caps-h-tags) settings. # Spam Keyword Ratio  This section highlights any spam keywords found in the content of your email campaign. While it's nearly impossible to have zero spam keywords, having an excessive amount of them can raise a red flag. For instance, if a particular spam keyword, such as "Free," is used multiple times in conjunction with other spam keywords, it can make your email appear very spammy and suspicious. In this example, "Free" is used 7 times, which is considered high and may result in a lower deliverability rate. For more information about this section, please refer to the [Spam Trigger Detection](/features-settings/spam-trigger-detection) settings. # Link Summary  This section conducts a comprehensive examination of every unique link in your email campaign, tracing each redirect until it arrives at the final destination. The goal of this scan is to confirm that there are no broken links in the sequence. You can conveniently view all the links, categorized, and their respective redirect destinations by clicking on the `#` next to each category. It will also notifies you of how many links have missing `TITLE` attributes it discovered and how many unsecured links it discoverd, These details are crucial to informat the user what the links are about and unsecured links can pose a security risk to your subscribers. For more information about this section, please refer to the [Broken Link Recursion Checker](/features-settings/link-summary) settings. # Text To Link Ratio  This section compares the number of links to the number of words found in your email and informs you if the ratio is above the maximum acceptable ratio. These details are crucial because having too many links can make your email look cluttered and unprofessional to your subscribers. The [Campaign Cleaner](https://campaigncleaner.com) provides you with an easy-to-read info card, highlighting these issues so that you can take action to optimize your email campaign. For more information about this section, please refer to the [Text To Link Analysis](/features-settings/text-to-link-analysis) settings. # Text to Image Ratio  This section compares the number of images to the number of words found in your email and informs you if the ratio is above the maximum acceptable ratio. It also notifies you of how many images have missing `ALT` attributes. These details are crucial because having too many images can make your email look cluttered and unprofessional. The [Campaign Cleaner](https://campaigncleaner.com) provides you with an easy-to-read info card, highlighting these issues so that you can take action to optimize your email campaign. For more information about this section, please refer to the [Text To Image Analysis](/features-settings/text-to-image-analysis) settings. # Blacklisted Domains  In this section, we scan all links in your campaigns and their 301 redirects, checking them against various blacklists, phishing, and malware detection sites. This ensures that none of the links in your email pose a threat to your customers or your deliverability. For more information about this section, please refer to the [Blacklist Link Recursion Checker](/features-settings/blacklisted-links) settings. # Image Summary  This section of the email analysis tool focuses on checking the images used in your campaign. **Oversized Images:** It highlights any images that are larger then the space defined in the HTML. Clicking on the `Oversized Image Lists` will provide you with a list of these images, they can automatically be resized and hosted on our super fast global CDN Edge powered by Cloudflare. Don't worry at a click of a button, the HTML is also updated with the new image location. For more information about this section, please refer to the [Oversized Image Detection](/features-settings/image-summary) settings. **Unsupported Images:** * Background Images This section enables you to promptly determine whether you have included any background images in your email campaign. It is essential to note that background images may not be visible in several mail clients, such as Gmail. For more information about this section, please refer to the [Background Image Detection](/features-settings/background-image-detection) settings. * Unsupported Formats This feature will notify you if your email contains images in formats that are not broadly supported, such as .svg, .tiff, .heic, .avic, .apng, etc. Fear not, as our Resize and Host tool will automatically resize and convert these images to the universally supported .jpg format and host them on our ultra-fast global CDN edge powered by Cloudflare. The links in your email campaign will be seamlessly updated to reflect the new location. For more information about this section, please refer to the [Unsupported Image Detection](/features-settings/unsupported-image-detection) settings. # Poor Delivery CDN Detection  This section highlights any CDNs (Content Delivery Networks) used in your email campaign that may have poor performance or a bad reputation. These CDNs can negatively impact the speed and reputation of your email campaigns, potentially leading to lower engagement rates or your emails being marked as spam. We understand that finding a new location to host your images can be challenging, so we offer you 5 GB of image hosting with any subscription. This service will automatically resize, host, and transfer your images to our high-speed global CDN edge, powered by Cloudflare. For more information about this section, please refer to the [Poor Delivery CDN Detection](/features-settings/poor-delivery-cdn-detection) settings. # Campaign Cleaner Source: https://docs.campaigncleaner.com/campaign-cleaner/clean-campaign Keep your email marketing campaigns in top shape with Campaign Cleaner. Optimize deliverability, design, and performance for better results.  [Campaign Cleaner](https://campaigncleaner.com) is a powerful email marketing tool designed to help businesses improve the performance of their email campaigns with a single click of the green button. With advanced features and intuitive interfaces, Campaign Cleaner makes it easy to optimize your email marketing strategies, streamline your workflows, and boost your ROI. ## Key Features * **Advanced Cleaning Algorithms:** Campaign Cleaner automatically scans your email campaigns to identify and rectify issues such as broken links, missing images, and invalid HTML codes, ensuring flawless delivery to your subscribers. * **AI Spam Trigger Detection:** The tool identifies keywords that could trigger spam filters, enhancing the likelihood of your emails landing in the inbox. * **Resize, Convert and Host Images:** Campaign Cleaner optimizes your emails by automatically resizing and converting images to email-friendly formats. It also hosts the images on a fast global CDN, ensuring quick loading times and a visually appealing presentation in your campaign HTML. * **Email Inbox Previews:** Preview your emails across various email clients and devices to ensure consistent rendering and formatting. * **Accessibility Enhancements:** Features like ALT Tag Management ensure your emails are accessible and engaging even when images don't load. ## Integration and APIs Campaign Cleaner offers powerful APIs and integrations, allowing seamless connectivity with CRM systems, ESP's, and can easily be implemented into your own custom workflows. This enables real-time tracking and analysis of your email campaigns, facilitating data-driven optimizations. ## Ready to enhance your delivery? Campaign Cleaner has received accolades from various professionals, including Sales Managers, Marketing Specialists, and Business Owners, who commend its efficiency and impact on their email campaigns. Whether you are a small business owner or a large enterprise, [Campaign Cleaner](https://campaigncleaner.com) is a valuable tool for any email marketer looking to take their campaigns to the next level. With its comprehensive suite of features and powerful integrations, Campaign Cleaner can help you save time, increase your ROI, and deliver more effective email campaigns to your subscribers. So why wait? **Try [Campaign Cleaner](https://campaigncleaner.com) today and start optimizing your email marketing strategies like a pro!** # Import Campaigns Source: https://docs.campaigncleaner.com/campaign-cleaner/import-campaigns Submitting campaigns through email to Campaign Cleaner is a simple and convenient way to optimize your email campaigns. # Import an Existing Campaign Submitting your campaign to Campaign Cleaner is easy! Simply follow the steps outlined under "Submit Campaign," and we'll analyze your email directly from your campaign software. This allows you to make any necessary changes and ensure your email is optimized before it reaches your audience. > [!NOTE] > > If you import a campaign with [embedded images](/references/embedded-images), Campaign Cleaner will put those images on our Blazing Fast Public CDN and change the HTML to reference those images automatically.  # Saved Campaigns Source: https://docs.campaigncleaner.com/campaign-cleaner/saved-campaigns Keep track of your email campaign optimizations with saved campaigns. Easily access previous improvements to streamline your email marketing efforts. # Saved Campaigns - Everything You Need to Know This section enables you retreive all your saved email campaign and can store multiple versions of it for future reference. All campaigns submitted through email or API are saved in this section. You can easily load any saved campaign into the HTML editor by clicking on a `load` button or download it to a text file that can be imported into your email campaign tool. With this feature, you can effortlessly manage and keep track of your saved email campaigns by sorting, searching, and deleting as needed. This allows you to make changes without having to start from scratch each time.  # Settings Source: https://docs.campaigncleaner.com/campaign-cleaner/settings Enhance the performance and deliverability of your email campaigns with advanced settings. Optimize your emails for better results. # Campaign Cleaner Settings - You're In Control [Campaign Cleaner](https://campaigncleaner.com) provides a wide range of settings that offer complete control over how your HTML is optimized, resulting in a boost in engagement and ROI. The settings are divided into three main sections for easy management: 1. Toggle Settings - These settings can be toggled on and off to control specific features of your campaign. 2. Advanced Settings - A lot of the magic happens here, as these settings consist of toggles and user input that control the dynamics of your campaign. 3. Always On Settings - These settings are based on analytics and won't change or update your Email Campaign's HTML, except for the mandatory CSS Inliner and HTML Sanitizer. 4. Save Settings - After configuring your desired settings, save them for quick reference. Create distinct presets for various use cases, streamlining your workflow and enhancing efficiency.. Each campaign can have different settings, and these settings are saved with your campaign. For new campaigns, the default settings are inherited from the previous campaign settings used. # Toggle Settings Here's a list of all the different toggle settings, please refer to the Feature & Settings section of the documentation to explore each of these settings.   # Advanced Settings Here's a list of all the different advanced settings, please refer to the Feature & Settings section of the documentation to explore each of these settings.   # Always On Settings Here's a list of all the different alwayus on settings, please refer to the Feature & Settings section of the documentation to explore each of these settings.    # Save Settings The save preset function is situated in the top-right corner of the settings page. Easily create and customize multiple presets for diverse use cases, optimizing your workflow and boosting overall efficiency.   # Alt and Title Attribute Management Source: https://docs.campaigncleaner.com/features-settings/alt-and-title-attribute-management Learn why Alt and Title attributes are necessary in email and how they can improve the accessibility and deliverability of your email content. # Are ALT Descriptions and Link Titles Necessary? When it comes to designing HTML emails, including the right elements can make a big difference in terms of accessibility, deliverability, and user experience. One key element that should not be overlooked is the use of alt and title attributes in images and links. Alt attributes are used to provide alternative text descriptions for images in case they can't be displayed, either because of technical issues or user preferences (such as disabling images in email clients). By providing a concise and descriptive alt text, you can ensure that the content of the image is still conveyed to the recipient, even if they can't see the image itself. Title attributes, on the other hand, are used to provide additional information or context for links. When a user hovers over a link with their cursor, the title attribute can display a tooltip with additional information, such as a brief summary of the linked content or a call to action. This can help improve the user experience by providing more context and guidance for the user. Both alt and title attributes can also play a role in email deliverability. In some cases, email clients may use the presence and quality of alt text as a factor in determining whether an email is legitimate or spammy. By including meaningful and relevant alt text, you can help improve the legitimacy and trustworthiness of your email content in the eyes of spam filters. Similarly, by using descriptive and relevant title attributes, you can help reduce the risk of your email being flagged as suspicious or low-quality. This can help improve your email's deliverability and ensure that it reaches your intended audience. [Campaign Cleaner](https://campaigncleaner.com/) will point out any missing ALT and TITLE attributes on images and links, in the `Campaign Analysis` tab and also on the `Clean Campaign` tab. Below you will see an example under the `Campaign Analysis` tab, indicating that there are links and images missing the TITLE or ALT Attributes.   Clicking the # next to `Images missing ALT Attribute`, brings up an easy to management tools to allow you to quickly update all your `ALT Descriptions` at once. There is a button to generate the "ALT Descriptions Automatically" using computer vision AI.  Below is an example of the "ALT Descriptions" generated at a click of a button.  Clicking the # next to `Links Missing TITLE Attribute`, brings up an easy to management tools to allow you to quickly update all your `TITLE Attributes` at once.  The Green button, "Use Link Text" allows to populate the Link Titles, using the text from the link really fast. Not all links have text, some have images in between, those you will need to update manually.  # Video Overview of ALT Attributes # Video Overview of Title Attributes # ALT and TITLE Attributes Use Case > [!NOTE] > > A clothing retailer is creating an email campaign to promote their latest collection of summer dresses. The email includes several images of different dresses, and the retailer wants to ensure that the images are accessible to all subscribers, including those who may have visual impairments or are using screen readers to access the email. > > To achieve this, the retailer decides to include alt and title attributes in the image tags of the email. Alt attributes provide a text description of the image that can be read by screen readers, while title attributes provide additional information about the image when the user hovers over it with their mouse. > > By including alt and title attributes in their email images, the retailer can improve the accessibility and user experience of their email campaign, making it easier for all subscribers to engage with their content. Additionally, by ensuring that their email is accessible to a wider range of users, the retailer can also improve the overall deliverability and engagement of their email campaign. > > To ensure that their alt and title attributes are optimized and comply with best practices, the retailer uses [Campaign Cleaner](https://campaigncleaner.com/) to identify any missing or inaccurate attributes, and to automatically generate alt tags based on the image file name or other relevant information. This helps to streamline the email creation process and ensure that their emails are accessible and effective for all subscribers. # Background Image Detection Source: https://docs.campaigncleaner.com/features-settings/background-image-detection Improve your email deliverability by detecting background images that could affect rendering. Optimize your campaigns for better inbox placement. # Do Email Clients Really Block Background Images? Email marketing is an essential component of any digital marketing strategy. However, it's important to understand that not all email clients display images in the same way. In particular, many popular email clients like Windows Mailand Outlook may block background images or not display them correctly. This means that email designers must take extra care to ensure that their emails display correctly on all email clients to maximize engagement and deliverability. One way to ensure that emails display correctly is to remove background images altogether. This can help improve deliverability and engagement rates as emails with broken or missing images are more likely to be marked as spam or deleted by recipients. Additionally, background images can sometimes make emails look cluttered or distract from the main message, so removing them can help create a cleaner and more streamlined design. Designers can still incorporate visual elements into their emails by using other design elements like colors, fonts, and graphics. By focusing on these elements and designing emails with a mobile-first approach, designers can create emails that are engaging and effective regardless of the email client used by recipients. Ultimately, the key to successful email marketing is to create emails that are visually appealing, easy to read, and contain valuable content that resonates with recipients. The good news is most of the major ISP email clients do support background images. If you only mail Consumer addresses that support background-images feel free to use them and ignore the warnings and alerts. [Campaign Cleaner](https://campaigncleaner.com) is designed to detect all instances of background images used in your email campaigns and provide you with a comprehensive list. This way, you can easily identify and make necessary adjustments to your email templates, ensuring that they render correctly across all email clients and devices. By removing background images that are not supported by certain email clients, you can improve the overall deliverability and engagement of your email campaigns, and provide a seamless experience for all of your subscribers.  If present, background images will be listed under the `Unsupported Images` section because not all email clients do not support them. > [!TIP] > > Currently, we don't offer a one-click solution for hosting background images as we do for other images in your campaign. However, if you require hosting for your background images, you can upload them to the CDN within your account and replace the existing links with the new ones. # Video Overview of Background images # Background Image Removal Use Case > [!NOTE] > > A real estate company regularly sends out email campaigns to its subscribers featuring properties for sale or rent. One of their recent campaigns had a background image of a beautiful beach scene, meant to evoke the idea of relaxing in a luxurious beachfront property. > > However, when they sent out the campaign, they noticed a significant drop in engagement and click-through rates, particularly among subscribers who used email clients that don't support background images. > > Realizing this issue, they used Campaign Cleaner to detect and remove all background images from their email campaigns. The next campaign they sent out saw a marked increase in engagement and click-through rates, indicating that their subscribers were more likely to engage with emails that displayed properly on their devices. > > Overall, by removing background images, the company was able to improve the deliverability and engagement of their email campaigns, resulting in more successful marketing efforts. # Blacklisted Link Checker Source: https://docs.campaigncleaner.com/features-settings/blacklisted-links Blacklist Link Recursion Checking helps to avoid having your email flagged as spam by checking if any of the links in your email have been blacklisted. # Why Do We Do Blacklist Link Recurison Testing? Blacklist Link Recursion Checking is an important technique for improving email deliverability. When sending out email campaigns, it's common to include links to external websites, but these links can often be a source of problems. If any of the links are blacklisted by spam filters, your email is likely to be marked as spam, which can harm your reputation and reduce the chances of future emails reaching the inbox. One way to avoid this is to use Blacklist Link Recursion Checking. This technique checks all the 301 redirects of all the links found in your email campaign. By doing so, it can detect if any of the links lead to a blacklisted website, even if the original link itself is not blacklisted. This means you can identify potential issues before sending your emails, and make the necessary changes to ensure your emails have the best chance of reaching your subscribers' inboxes. Not only does Blacklist Link Recursion Checking improve deliverability, it can also help you understand which links are the most problematic. If you consistently see links that lead to blacklisted websites, it may be worth reviewing your content and considering whether it's necessary to include those links in future campaigns. Our process includes verifying the links within our content against domains that are flagged on blacklists. While many organizations limit their checks to RBL's such as the one available at [https://multirbl.valli.org/lookup/](https://multirbl.valli.org/lookup/), we extend our scrutiny to additional platforms such as PhishTank, Google Transparency Report, and others. This extra step ensures that if a user clicks on any link, they won’t be hindered by blockades that prevent access to the linked destination.  # Video Overview of Blacklisted Link Detection # Use Case for Blacklist Link Recursion Testing > [!NOTE] > > A marketing agency is tasked with creating an email campaign for a client. The agency knows that email deliverability is critical for the success of the campaign, so they decide to use Blacklist Link Recursion Checking as a part of their email validation process. > > The agency creates the email campaign and runs it through their validation tool which uses Blacklist Link Recursion Checking from [Campaing Cleaner](https://campaigncleaner.com/). The tool tests all the 301 redirects of all the links found in the email, ensuring that there are no spammy or malicious links that might cause the email to be flagged as spam or blocked by ISPs. > > After validating the email, the agency sends it out to the client's subscribers. Thanks to the Blacklist Link Recursion Checking process, the email is delivered to the subscribers' inboxes instead of getting caught in spam filters. > > The agency monitors the email campaign and sees that the open and click-through rates are higher than average, indicating that the email was well-received by the subscribers. The client is pleased with the results and the agency has earned their trust by ensuring the success of the email campaign through effective email deliverability techniques. # Classes and ID Removal Source: https://docs.campaigncleaner.com/features-settings/classes-and-id-removal Removing unnecessary classes and IDs in email delivery can reduce file size and load time, improving deliverability and open rates. # What are the benefits of Classes and ID Removal ? In HTML email design, classes and IDs are often used to apply styling and formatting to specific elements of an email, such as text or images. Removing classes and IDs from email templates can improve email deliverability. * Removing classes and IDs can help streamline the HTML code in email templates, making them more lightweight and less cluttered. This can improve loading times and reduce the overall size of the email, which can be particularly important for users who access their email on mobile devices with limited data plans or slow connections. By reducing the file size and improving loading times, emails are more likely to be opened and read by recipients, which can lead to better engagement and ultimately, better results for email marketers. * There is actually no need for them, once you [inline your CSS.](/features-settings/css-inliner) ## Example of With and Without Classes ### With Classes  ### Without Classes  This is a basic example, normally, there will be an external CSS those classes are attached to and you will [Inline the CSS](/features-settings/classes-and-id-removal) before removing the classes. You will also convert [`h` tags to `p` tags](/features-settings/h-to-p-tag-conversion) to ensure a consistant display across email clients. # Video Overview of Classes an ID Removal # Classes and ID Removal Use Case > [!NOTE] > > An online marketing firm observed that their email campaigns were not resonating well with their audience, leading to disappointing engagement levels. After conducting some research, they discovered that one of the reasons for their poor deliverability was the excessive use of classes and IDs in their email templates. > > The problem with using so many classes and IDs in emails is that it increased the size of the email that it caused clipping. Portions of the email is not shown to the users because of clipping. To address this issue, Company XYZ decided to use a tool like [Campaign Cleaner](https://campaigncleaner.com/) to remove all unnecessary classes and IDs from their email templates. > > By removing these unnecessary classes and IDs, and reducing the size of their email, the company was able to improve their email engagement rates, with more subscribers interacting with their emails. # Control and Non-Printable Characters Source: https://docs.campaigncleaner.com/features-settings/control-and-non-printable-characters Control and non-printable character removal is the process of removing non-printable characters from a text document. # Is Control and Non-Printable Character Removal Necessary? Control and non-printable character removal can play a crucial role in helping improve email delivery. Non-printable characters can often appear as random, unwanted characters within an email's HTML or plain text, which can negatively impact the email's formatting and readability. Additionally, some email servers and spam filters may flag emails containing non-printable characters as suspicious or spammy, resulting in the email being blocked or sent to the recipient's spam folder. By removing non-printable characters, email senders can improve the formatting and readability of their emails, making them more appealing and engaging to the recipient. Additionally, by ensuring that their emails do not contain any suspicious or spammy elements, senders can increase the likelihood that their emails will reach the recipient's inbox rather than being flagged as spam. Therefore, mastering the process of control and non-printable character removal can help email senders maximize the impact of their messages and improve their email deliverability. ## What are Non-printable Characters? Non-printable characters, on the other hand, are characters that do not have a visible representation in printed text. Examples of non-printable characters include the null character (ASCII code 0), the backspace character (ASCII code 8), and the escape character (ASCII code 27). Other non-printable characters include various control codes and character formatting codes used in electronic documents, such as Unicode characters that represent formatting elements like line breaks. # Video Overview of Control and Non-Printable Character # Control and Non-Printable Character Removal Use Case > [!NOTE] > > ABC Marketing is a company that regularly sends out email newsletters to their subscribers. However, they have noticed that some of their subscribers are experiencing issues with the formatting and display of their emails. After investigating the issue, they discover that there are control and non-printable characters in their email templates that are causing the issues. > > To address this issue, ABC Marketing decides to use a software tool such as [Campaign Cleaner](https://campaigncleaner.com) to automatically remove any control or non-printable characters in their email templates before sending them out. This ensures that their emails are properly formatted and free of any potential display or delivery issues. > > By using a tool like [Campaign Cleaner](https://campaigncleaner.com) to remove control and non-printable characters, ABC Marketing is able to improve the overall readability and professionalism of their emails, which can lead to higher engagement and conversion rates. They are also able to reduce the risk of emails not displaying correctly for some subscribers, which can improve their email deliverability rates and ensure that their emails are reaching their subscribers' inboxes instead of being marked as spam. # Convert CSS Attributes To Style Source: https://docs.campaigncleaner.com/features-settings/convert-attributes-to-styles Relative references are not suitable for emails because the absolute path will be of the URL where the email is opened, not where image is stored. ## What are CSS Attributes? Some HTML elements allow you to define CSS related attributes instead of using the style attribute. For example `