We are trying to implement a "Custom Form"(not Sitecore wffm) on Sitecore platform. The form is a multiple-steps form. To make it simple, let's say 3 main steps:
- enter personal information(name/email/DOB/etc)
- enter more information(terms/etc)
- enter payment information(credit card or bank info or paypal etc)
After go through above steps: user finished the process, got a receipt and receive an email
Our ambitious target
Because users might drop off on any step and the website is based on the Sitecore platform, our ambitious target is not only get above 3 steps done, but also want to maximize Sitecore marketing functionalities. E.g.
- Analytics Tracking for each step
- Register different goals/campaigns
- Assign different pattern card directly to user if they didn't finished the process
- Add user to Engagement Plan if not finished the process
- and so on
Our main approach:
On each of step, when user click "Continue Button", will trigger Api call and post entered data to Back-end codes.
In back-end codes, cast the posted data into a PipelineArgs, then go through a "Custom Pipeline"(refer: https://laubplusco.net/creating-custom-pipeline-in-sitecore/). Each of processor in the pipeline will focus on one functionality.
E.g. first processor to do validation; second processor to save data to session/database; third processor to do Analytics; fourth to register a goal; fifth to do Engagement Plan; sixth to send email......
There're several advantages: developers can share the tasks; we can implement functionalities in different stages; processors kind of not affected each other; if any processor wrong, just remove it, then user can still go through the form and finish the application; don't need to re-compile if urgent issue on Production environment.
By the way, we got this idea inspired by "Save Actions" on WFFM(a bit difference though). Refer: https://doc.sitecore.net/web_forms_for_marketers/web_forms_for_marketers/working_with_actions_and_validations/the_submit_button/submit_actions
someone said Sitecore pipeline can only be used to extend build-in/Core pipelines, e.g. httpRequest/sessionEnd/publish/etc. Is that true and why? (personally, I can't image that Sitecore would abandon the pipeline engine in future, any roadmap?)
someone concerned about Test. My understanding is that most of test will be implemented on Service layer, not on processor. Is there any specific reason for Test?
any other potential issue?
Is there any other better approach or pattern how to implement a custom form on Sitecore platform?