Files
nolimit-news-dist/docs/SETUP.md
T

126 lines
6.1 KiB
Markdown

# Setting up Nolimit News
<!-- nlnws:version 0.2.2 -->
## Installing it
| Needs | Version |
| --- | --- |
| WordPress | 5.9 or newer |
| PHP | 7.4 or newer |
| WooCommerce | not needed |
1. Download `nolimit-news.zip` from the
[latest release](https://gitea.nolimit.dk/kw/nolimit-news-dist/releases/latest).
2. **Plugins → Add New → Upload Plugin**, then activate.
3. Open **Newsletters** in the admin menu.
Later versions arrive in **Dashboard → Updates** like any other plugin: it
checks its own release feed and is never looked up on wordpress.org. The first
time you open its screen it offers to switch automatic updates on for it; that
is WordPress' own setting, in WordPress' own place, and you can say no.
## Making mail actually leave
This plugin hands every message to WordPress (`wp_mail()`), so mail leaves
however the rest of your site's mail leaves. On most hosting that is the
server's own mail function, which is often slow, rate-limited or marked as spam.
For a newsletter, set up a real sender first: an SMTP account or a mail service,
through any SMTP plugin, or Nolimit Send. Without that, a test send may arrive
in a spam folder or not at all, and a large send may be cut off by your host's
hourly limit. The screen tells you when mail fails: if the first five messages
in a row are refused, the send stops by itself rather than working through your
whole list.
Sending runs from WordPress' background scheduler (WP-Cron), one batch a minute.
On a quiet site that only runs when somebody visits, so a scheduled time means
"not before", never "exactly at". If WP-Cron is switched off on your site, the
Send screen says so, and your server has to call `wp-cron.php` itself.
## The first ten minutes
1. **Templates → How every issue looks.** Set the brand colour, the address of
a public logo image, and your postal address. The address is printed at the
foot of every mail: marketing mail is expected to say who sent it and where
they are. Pick the default template.
2. **Lists → New list.** Give it a name and a line about what people are signing
up for. Leave "Offer this list on signup forms" ticked for lists the public
may join; untick it for one you only fill yourself.
3. **Put the form on a page.** Add the *Newsletter signup* block, or the
shortcode `[nolimit_news_signup]`. With no list named, it offers every public
list.
4. **Write an issue.** On the Send tab, **Write a new issue**. It is the block
editor with only the blocks that survive an email program: paragraphs,
headings, lists, quotes, images, separators, columns, a button and a product
card. Open the *Add to the issue* panel and drag a product in, or click it.
5. **Preview, then send a test** to your own address. Look at it on a phone.
6. **Send now**, or **Send not before** a time. Pick the lists; a person on
several of them is mailed once.
When the last message has gone, the issue is published, which puts it in the
archive at `/newsletters/` on your site. The *Newsletter archive* block lists
the latest issues on any page.
## Checking that it works
* **A signup arrives as pending**, and you receive the confirmation mail. Follow
its link: a page with a button appears (a mail scanner that opens the link
cannot confirm anyone by accident), and pressing it makes the person
*subscribed*.
* **The unsubscribe link in a test send goes nowhere**, by design. In a real send
it takes one click, and the person is not mailed again.
* **Mailed N of N** on the issue's Send panel counts what was handed to your mail
system. It cannot know what the receiving servers did with it.
## Leaving Mailchimp
**Subscribers → Import** reads the CSV files Mailchimp lets you export. Do the
three separately:
* **Subscribed** people join as subscribed. You tick a box to say they agreed to
receive your newsletter.
* **Unsubscribed** people are recorded as unsubscribed, so no later import can
bring them back.
* **Cleaned** addresses are suppressed and mailed nothing.
Only the address and the name are read, and the file itself is not kept. A large
file is handled in steps; the screen says which row to carry on from. Imported
people stay visibly *not confirmed* until they follow a link, and **Ask the
imported people** mails them in batches of 50 to do exactly that. They stay
subscribed whether or not they answer.
## Opens, privacy and the law
Counting opens is **off** until you switch it on under *How every issue looks*.
Switching it on adds one invisible image to each mail and records, in your own
database, that this person's copy was opened. It is an estimate: some mail
programs load images for the reader and others never do. Switching it off stops
recording at once and removes the image from later mail. Nothing is ever sent to
anyone else.
Settings → Privacy → Policy Guide gets a paragraph that matches your choice.
Personal data exports and erasure requests from WordPress cover the lists: an
export includes the dates the person asked and confirmed, and an erasure deletes
the address and its consent records.
You are responsible for having consent to mail your list. The plugin helps by
keeping the proof: *confirmed* means the person followed their own link, and an
imported person who has not is shown as one you are asserting rather than one
you can show.
## Deleting it
Deactivating keeps your lists, subscribers and issues. **Deleting** the plugin
removes its tables, its settings and every issue, because the subscriber lists
hold personal data with no other owner. Export what you want first
(**Subscribers → Export these as CSV**).
## If something is wrong
| You see | It means |
| --- | --- |
| A template "was found and not used" | It broke a rule (a script, a link tag, a missing unsubscribe token). The message says which; fix that and save again. |
| *Stopped* with "The mail system said:" | Your mail setup refused the first messages. Fix it, then **Carry on where it stopped**; nobody is mailed twice. |
| `/newsletters/` shows a 404 | Open Settings → Permalinks and press Save once. |
| Scheduled issue did not go at the time | WP-Cron fires on a visit. Visit the site, or have the server call `wp-cron.php` every minute. |