What jcbones said above is absolutely correct.
I produced a "mini CRM" for a client of mine which does a very similar task.
My client installs fireplaces, gas stoves etc and can also provide servicing for all the products they install (to comply with warranty). My system allows them to enter client details, add jobs and schedule when services are due (11 months from the job date), it will then produce an email that reminds my client that x amount of services are due of which they can then act upon.
To give you another example like above but for your specific situation:
You have a database that collects customer information once they purchase a soap dispenser.
Every day at 7am a cron tab or cron job (these are really easy to setup in an admin panel such as CPanel but can also be done manually) executes a PHP script that does the following:
Check the database for customers who purchased a soap dispenser.
Check that the customer is happy to be emailed.
Build the email (Dear John, don't forget new soap for your "xj2000 super soaper", click here to order.....) etc
Send the email.
etc