No announcement yet.

Learning EspoCRM and Design

  • Filter
  • Time
  • Show
Clear All
new posts

  • Learning EspoCRM and Design

    In the future this thread will be use for discussion; the Wiki hosted on Github will be used instead to post update; please see:

    Contribute to o-data/EspoCRM-Learning-and-Design development by creating an account on GitHub.

    Part 2 of this post can be found here:
    Part 3 of this post can be found here:


    I wanted to create this thread where I could share some "hidden" feature and document progress in learning how to use EspoCRM. This idea popup when I watched this video and realize that this feature doesn't seem to be documented anywhere (I may have missed it). Maybe one day I can contribute to the documentation somehow but writing it in the forum is much easier as it is more free and without the pressure to write good documents.

    I try to look through this page:

    Can be done using GUI Web Interface.
    1. Relationship Tool tips:
    (update as of September 2020, these post below will need to be update to category once I get the chance)
    Secret: (these post need edit into category)

    Local SMS_ gateway from your Android Phone, URL and API:

    You can use Javascript commands in your field default see:
    But is there other code we can use? Are these standard javascript command and EspoCRM suppose any type of javascript command?

    Link Multiple Field - Make Relationship into a Field that can be linked (like Contact > Account) rather just than Relationship panels.
    Comments: I read this in the documents but did not quite understand what it mean. Looked through the screenshot of this thread and user post before I understood it.

    Printing "Array" field in PDF as a list not as comma seperated.

    Filter Date field without time:

    Default Team -

    Adding E-signature to EspoCRM by telecastg, combine this with the Javascript date will make it possible to turn it to a true-signature/contract documents similar to DocSigns, missing IP Logging I guess, not sure if Workflow is capable to support emailing.
    Forum thread:

    Attachment and email:
    Attachment to Contact Email in Bottom Panels -

    Custom Button, Mass Document adding / Bulk data upload (not using import):

    Adding Task to Campaigns (Turning Basic entity to Basic Plus?):

    Auditing? Administration Duties? Monitor User? Be sure to have a look at: Administration > Auth User. Click on that arrow button and View.

    Multiple Lines / PDF Print? "Maybe you used double braces. You need to use triple for multi-line texts: {{{description}}}"

    Workflow: check duplicate -

    Create "Reminder" notification feature for new custom Entity:

    How to change to the copyright area / EspoCRM Copyright footer -

    Custom CSS, layout, Theme, Skin?

    Duplicate Entity or Cloning:

    Minimum Search Characters is 4, if it 3 it doesn't work. Solution is to use %, or read here:

    Recreating field of same name to "transfer data". See:

    Change or reallocate Upload folder to another location (attachment, email, storage):

    Search & Replace / Formula String / New Custom Function -

    Adding Phone & Email field to custom entity:

    Search not showing the right result?


    Found this fancy product selector video, not sure if it also possible if you just buy the Quote/Invoice package or will require additional coding that the video owner did:
    Manage to found him here but no where to see how to get/buy the extension, looking through his video there is some feature that is of interest. Not sure if he contributing to the code or all of the feature is for private use?:
    Manage to find more information, look like you have to PM or email to get more information:
    Last edited by espcrm; 01-31-2024, 11:33 AM.

  • #2
    Great idea! It could be the first step towards a proper developer manual if undocumented things get documented.


    • #3
      Please make a topic about the desired feature in this branch Our developers are monitoring this branch and building the plans for the EspoCRM enhancements.


      • espcrm
        espcrm commented
        Editing a comment
        Will do in the future but I currently don't want to burden further a (probably) already long list of plans/roadmap in queue.

    • #4
      #sms _sms <-- I add this _sms because EspoCRM forum can't search for 3 letter words, from now on whenever it is 3 letter, I advise you to add _ prefix or suffix. Thank you.

      Too long didn't read (TLDR)? See Guide part to jump straight to tutorial.

      Below is just my insight and learning progress.

      On the 7th of July 2020 I have finally made one success attempt, I been searching for software and guide but never though of "hey why not try youtube". Decided to try today expecting another failure I have finally made progress. The full guide can be found below, this will be my useful tool until I learn a bit more to making more seamless.

      As with the current gateway, it is a pay to use feature (both for the extensions and for usage per message). This gateway system is good and useful if we send mass message or frequent message. But for general use, I rather use my PC (and in a way have my SMS logged on EspoCRM), then to type on my Android phone the message on phone, not to mention I can't use Template, and formula, etc, have to retype (until the community release a Phone App).

      Anyway this solution is not by any chance perfect and it quite bare minimum, further more have a few restriction and limitation but that can slowly be solve at a later stage, a SMS system has been over 2-4 years desire feature of mine (from using an older CRM system, to using Desktop software and "mirror screen").

      Enjoy with the joy and here is how I did it.

      --- Guide Part (note you need WiFi/network and Android phone)
      1. Watch this video:
      2. Use whichever tools needed to download the GSM Modem (SMS) App. You might also need to download the GSM Helper Tool too:
      3. Install and Open the App
      4. Click the big red button so it "On" and Green color.
      5. Create a user (for example test 123)
      6. Go on to your Desktop or PC or whichever tool you want. Refer to JSON Examples for the URL link
      7. For example: (is my android phone IP). Note you might want to set your phone to static IP.
      username and password is what you create in step 5. I used test and 123
      Phone number is the number you want to send your message to;
      Message here is a bit more interesting, my first test I instantly notice, "How do I get a second line, paragraph or line break in here?" Did a quick search and the secret is to use "%0A", with this unicode(?) it will create next line, making my message look like this:

      8. Next I would create a formula with these above detail, then if I want to send a message I can just click on this special URL or copy/paste it in my web browser.

      END Guide.

      And that the end of the tutorial. I will post back once I learn how to integrate more (such as Reading response SMS and getting it to the EspoCRM system). Looking forward to seeing how you guys use it.

      I'm planning to set up a spare android phone that is always on and available, that way I don't need to use my phone. But then I won't get message response to my mobile so need to rely on CRM or find a way to "copy/paste" message over.

      --- Additional Resources and Reading:

      ------- Formula and Template (Print2PDF)
      After playing with the formula for about 30 minutes now, so many error I still make when it come to do Template. Here is the code I come up with, copy/paste it in <> code view.

      <p></p><a href=";password=111&amp;phone={{#each contacts}}{{phoneNumber}}{{/each}}&amp;message=hello%0Atest" target="_blank">;password=111&amp;phone={{#each contacts}}{{phoneNumber}}{{/each}}&amp;message=hello%0Atest</a><p><a href=";password=111&amp;phone={{#each contacts}}{{phoneNumber}}{{/each}}&amp;message=hello%0Atest" target="_blank">test</a></p><p>;password=111&amp;phone={{#each contacts}}{{phoneNumber}}{{/each}}&amp;message=hello%0Atest<br></p>
      And an more readable format:{{#each contacts}}{{phoneNumber}}{{/each}}&message=hello%0Atest

      test{{#each contacts}}{{phoneNumber}}{{/each}}&message=hello%0Atest

      To explain: for Contact I pull their primary phone using {{each contacts}}{{phoneNumber}}, for message you can change this to your message field, for demo I left it as Hello Test, you can probably change it to {{{description}}} or {{name}} and these field will get filled out.

      To make it "look more pretty", I also tested if it possible to do this using URL, and it work, I change the URL to display "test" but clicking on it will open the SMS link which will send SMS to your contact.

      Next I need to tweak a bit more, I like using Template because it easier to modify than Formula. I might still use formula for simple thing though.

      My old post:
      All SMS I see is through some API and website portal. Any one ever tried a 'self-hosted' solution to this issue?

      Currently doing research and looking for anyone who want to learn with me.

      Seem like it is possible relatively (easy?) to do, this apps died but their website is still up:
      Without the apps, I can't turn my phone into the "gateway". This is a start, then we need to figure out how to get EspoCRM to use an API to send those request.
      Last edited by espcrm; 07-08-2020, 05:42 AM.


      • item
        item commented
        Editing a comment

        found this :

        i just try it .. and work like charm. (just begin/test.. still need cooding)
        i think this is one the best solution because no need Post/Get the phone.
        It's phone who Post to the espoCRM for sms to send or sms received.

        espoCrm must be reachable over net. (local or internet)
        if local, then by wifi
        if internet, then by wifi or data (in my case, no wifi at office)
        if no wifi, app go by data (failover)

        Last edited by item; 06-06-2021, 08:25 PM.

      • espcrm
        espcrm commented
        Editing a comment
        Hi item
        This look good. Unfortunately it seem like an inactive project (last update 2012) so might run into an Android app installation. And with a inactive community it also mean we be on our own for any troubleshooting.

      • item
        item commented
        Editing a comment

        i have see... but i have installed on a pop3 alcatel touch... and work like a charm.
        i have make a extension but need telecastg for a little adapt and correct.
        if he is ok.. i can send him and he look
        I think this will be a nice extension

    • #5
      I used an app on my Android phone that would convert an email to a text and send it, so I set a dummy email account with Google and emailed my messages to that account which was linked to the app called TextMyMail and my phone would send the messages, the app hasn't been updated since 2018 and my new phone doesn't like it but perhaps this is another alternative.

      Here's the link in case it might help.


      • espcrm
        espcrm commented
        Editing a comment
        Thanks. I did considered an Email to SMS but it rely on external services or server. But that is a nice way to log outgoing SMS, but no way to log incoming SMS is it?

      • telecastg
        telecastg commented
        Editing a comment
        Yes with TextMyMail you could do both, forward incoming emails as sms and emailing sms received.

      • jakov
        jakov commented
        Editing a comment
        Sorry telecastg I like to ask you it solution with TextMyMail is still working with you. I can not login to gmail account. i can install app on Android...

    • #6
      smseagle = only sms... no call !

      openvox = asterisk and basic sms (http get) .. limited 160char so if someone send a sms with longText.. you receive .. first end of text and then the begin

      zycoo = no sms support

      the problem is .. if someone call the number ?

      in belgium, is a sms provider with a special phoneNumber in 4char.. if you send a sms to this number, the sms recome to you i have not teste to call it.. but i imagine that i will talk to me
      and restriction in belgium :
      you can't hide gsm phoneNumber with sms
      you can redirect call to another phoneNumber
      you can't redirect sms

      Last edited by item; 01-12-2020, 09:33 PM.


      • espcrm
        espcrm commented
        Editing a comment
        One of the VOIP extensions support Belgium services I believe.

    • #7
      Just adding some options: Most usb internet keys have SMS capability in their management pages. Here I can get them used for as low as 3€. Another idea is to run commands on android phones on device or over USB cable like this: adb shell service call isms 7 i32 0 s16 "" s16 "+1234567890" s16 "null" s16 "Example\ SMS\ from\ Android\ !" s16 "null" s16 "null"
      Hello tothewine I am completely ignorant about usb internet keys or Android commands but would love to learn more. Could you provide some links that I can check ?


    • #8
      Some interesting links, the first is a youtube video showing how to use and arduino card and a gsm card to make calls and send sms and the second is an article describing how to use javascript to control an arduino board

      It seems to me at first glance that this could be one way to integrate EspoCRM with an inexpensive SMS sending hardware solution, however this implies having a local node.js server running javascript not the browser.
      Last edited by telecastg; 01-15-2020, 04:05 PM.


      • jakov
        jakov commented
        Editing a comment
        Like to ask if this app is still running for you at this time. I am tsting last version2.24 but can not login ito Gmail account. It seams like app is installad with all neadet phone system permisions. Can you pleas share some advice.
        Thanks in Advance

      • telecastg
        telecastg commented
        Editing a comment
        Sorry, I never got to implement it.

    • #9
      In my country router is starting to use "SimCard" as a backup solution should the wired internet goes down, but none of the admin/dashboard setting ever have SMS capability.


      • #10
        Extraordinary thought! It could be the initial move towards a legitimate designer manual if undocumented things get reported.


        • #11
          This post will talk about Entity & Design

          I just recently create a new "module" or "entity" using Base Plus. It just the bare basic as I couldn't find any other relevant entity that can be use.

          It basically call "Voucher" or "Coupon", using the Auto-number Increment a serial key is generated for voucher so we can eventually link the voucher to a customer. The issue I'm currently facing is Bulk adding, there doesn't seem to be anyway to bulk add (pretty much module), unless the feature is quite hidden and I just don't see it.

          There is the Import function hidden in Admin setting but that mean I have to use Excel or Notepad to add the entry, save the document and import it, set up the field and finally get a result.

          Currently I'm using "Duplicate" but not all field get duplicated, for example the "Contact" field doesn't and I can't Mass Edit the field in either. It OK to use duplicate when it only a few voucher but once it get to a certain numbers it quite tedious.

          How has everyone adding mass data? Import?

          PS: My Import function also showing a 403 error like when I install extensions, this is going to be a problem.


          Official EspoCRM Tips and Guide Tutorial
          Last edited by espcrm; 08-31-2020, 07:30 AM.


          • espcrm
            espcrm commented
            Editing a comment
            Recently I report "bug" for the very first time for EspoCRM. Apparently it is not a bug! There isn't a standard format or template to report bug from the look of it so I used other CRM template.

            See this thread:

            The topic was close so I couldn't write more there. It a weird design choice but as long as it work it is fine. I read through the documents and got it working as intent.

            I suppose in the future once the data get big, the weakness of enabling the Full Text Search will be shown as it get slow down.

          • espcrm
            espcrm commented
            Editing a comment
            Today I cheat my auto-number enum field by temporary resetting the number and changing it back again.

            Before using EspoCRM I already allocate numbers to each client. Starting with EspoCRM I didn't want to import right away as it will leave empty data.

            But there was a few Contact I would like to add them to EspoCRM but if I them they will be assigned the current Next Number. What is my solution?

            1. Go into Admin > Entity Manager > Contact - Field > Enum
            2. Edit the field. Copy the current next number, paste it somewhere if you dont want to accidentally lost it. Change the "next" number to the number I want (it should be unique)
            3. Go create the contact. This contact will get the Number
            4. Go back to step one. Edit the field. Paste that previously copy number. Save.

          • espcrm
            espcrm commented
            Editing a comment
            It weird how meeting doesn't have a "Location" field, usually meeting must have one. I decide to add in the Address & Map field in my Meeting entity.

            Next I'm thinking of linking the relationship to the Property. That way I can have information on the Location as well. Finally I'm thinking of using a formula to Copy/Paste the Property's address into the Address(Map) if it left blank so it will save me the trouble of double entry.

            However, starting out I think it best to just link the Property field to the Meeting as I have more time to customize.

        • #12
          Originally posted by espcrm View Post
          How has everyone adding mass data? Import?
          I'm going to be investigating this area soon as we are looking at using EspoCRM to track our product serial numbering.

          Often, we allocate batches of serial numbers at a time for a given product therefore we are going to need the ability to generate "X" amount of new records with a unique (auto-generated sequential) number.

          As soon as I've got something in place, I'll post back.


          • espcrm
            espcrm commented
            Editing a comment
            This post could possible help you:

            That great to hear. It a pity that the auto-number system is static and cannot be edit through the Interface (GUI UI)

            --- Irrelevant comments below:
            I have some old data that I already assigned numbers, so I started from the newest number, however as some of these data I need to start linking so I just create new Data. So once day I will eventually have duplicate data until I fix it manually.

            For example: ABC001 ABC002 ABC003 was my serial before EspoCRM. When I start using my EspoCRM I started at ABC004.

            However I need to link data ABC002 so I just create new data, now on EspoCRM it will be ABC005, but it true number should be ABC002.

        • #13
          This post will talk about Emails

          I'm starting to use the email system. It seem quite difficult to link an email to extra Contact or Account. All email seem to automated link to one if the email matched.

          More importantly is the "From Email" or which email use to be send out. Currently I'm seeing a single option, does it mean that I can't send out email from another name?

          For example, I can only set it up to be send from:

          But I will also need:

 <--- different domain.

          This may cause an issue for me to use the build in email system. How do you guys use your email?
          Last edited by espcrm; 01-22-2020, 05:55 AM.


          • espcrm
            espcrm commented
            Editing a comment
            Testing the email system I decide to add my Personal email and fetch about 2 months of email. Now that I'm happy with the result I decide to fetch for 1 year timeframe (and eventually since the beginning). However it seem like I can't just change the Fetch date? It doesn't fetch older email.

            Is it a bug? Or do I need to wait longer as it is still download/CRON/jobs/fetching? Do I need to remove the email, add it back again and this time have a higher fetch "Since" date? What will the issue be if I do that? Duplication of email and relationship linking?

          • espcrm
            espcrm commented
            Editing a comment
            Really couldn't find any information on adding more "From" email or multiple outgoing. I have finally figured out how to do it.

            Basically you need to go into the User page (your account/login) and add the email you to use, then refresh the browser or website, then your email list should allow you to send any email you need.

          • espcrm
            espcrm commented
            Editing a comment
            EspoCRM email relationship linking is super fast. Initially I thought you need to wait for the Workflow/CRON execution to be complete before email is linked.

            However right after I add an email to an Contact, all much with that email is instantly linked to the Contact and I can view the list of email from them. It is amazingly discovery in term of the email system!

            I still have trouble with the fetching though, see Comments

            I decided to go ahead and just remove the email, add back the personal email. This time I fetch well beyond the require date (first email in 2016), I fetch all the way from 2000 (I assume that it will only start fetching from 2016 and not waste time trying to find email beyond then).

        • #14
          This post will talk about Formula.

          I recently learnt how to use Formula, currently it is still the very basic that I'm learning, however it is my first "guide", poorly taken screenshot and I think the written version should be detail enough to follow.

          Please see this thread/post:

          This post will talk about Search

          The Search is awesome! Recently learnt about Full-text search (see first topic) and been using it. I think Email is best to not be included in Global search because at some point all your see is email result.

          Issue I'm currently having trouble is. "Filter" Global Search result. Yes I can just go into contact and search for Contact only but then I have to change my current view. Is there a search filter parameter that I'm not aware of in Global Search?

          For example: contact: john smith
          It should show only contact result or search only in contact.

          Old post above;

          New edited and update Post below.

          PART 3 of Learning EspoCRM

          This post is obsoleted; please see:
          Last edited by espcrm; 10-21-2020, 02:37 AM.


          • #15
            PART 2 of Learning EspoCRM

            This post is obsoleted; please see:
            Last edited by espcrm; 10-21-2020, 02:34 AM.