Jump to content


Most Liked Content


#10513 X2CRM 5.2 Summer Release Roadmap

Posted by John Roberts on 01 July 2015 - 02:22 PM

Hello X2CRM Community,

 

With X2CRM 5.0 release this past December we have been spending most of 2015 working on fine tuning X2 with a number of small releases ending with 5.0.9. On the side we have been working on our next functional enhancement release, X2CRM 5.2 scheduled for release at the end of July or the first week of August. It is likely we will follow 5.2 with 5.3 in September including additional mostly calendar focused enhancements. We will be sending out newsletters and such with more detail, until then here is high level list of the features planned for 5.2-3 later this month. 

 

X2CRM 5.2 - End of July Release

X2Flow Macros Buttons on Detail Records - so user can activate an X2Flow on a record 

Topics Discussion Board, extension of Activity Feed

- Themes - Color Coded Modules
- Major Module Detail View UI Update 
- Calendar Enhancements  
- Campaigns/Marketing Easy of Use Enhancements 
- Packaged Cloud Deployment options - AWS,  Digital Ocean, GoogleCloudCompute, X2VPS 
- Import/Export Worksheets for mass record updates 
- Mass Action updates for Tags, Actions, Comments, more 
- Deduplication Improvements 
- X2Flow Robustness Enhancements
- User Permissions Roles update performance improvements 
- New Documentation and Training Videos - see http://www.x2crm.com...aining-library/
- Weblead widget for Activity Feed Dashboard 

- Email Widget for Activity Feed Dashboard

- Updated, improved Administration Panel 

- X2CRM App Rebrand, removing X2Engine branding. 

X2CRM 5.3 August/September 
- Calendaring 5.3 

- Two way Google Calendar/Contact Synch 
- User Statistics  
- Wordpress Plug-in 
- Reports 3.0
- Scheduled Campaigns 

 

X2CRM 6.0 December/January 2016

- Yii 2.0 

- TBD

 

 

Best,

 

X2CRM Team

Santa Cruz




#9761 How-to: X2flows - Send an SMS with Twilio using Zapier

Posted by that0n3guy on 23 February 2015 - 01:06 PM

This how-to will be a little bit technical, but its really not that bad.  It also requires the pro or platnium downloadable version of x2engine.  It also requires the use of composer...

 

Setup

  • Install Composer: Make sure you have composer installed: https://getcomposer....-linux-unix-osx
  • Add phone number package: Add https://github.com/g...enumber-for-phpto your main composer.json: composer require giggsey/libphonenumber-for-php:~7.0
  • Add composer autoload to config files:
    • Create the file custom/protected/config/web.php . Add to the top (after <?php):  require_once dirname(__FILE__)."/../../../vendor/autoload.php";
    • Create the file custom/protected/config/console.php . Add to the top (after <?php):  require_once dirname(__FILE__)."/../../../vendor/autoload.php";
    • Also add to the bottom of custom/protected/config/console.php: $config['components']['request']['hostInfo'] = 'https://yourx2.domain.com';

Setup should be done.   Reload your site, see if it still works.  If not, you broke something.  Also test out a console command and see if it still works.

  • NOTE:  In my custom console.php, I also have to have this line: unset($config['controllerMap']); // Fix weird error when running console commands.  Some where proConfig.php is getting included.
    • I'm not sure why... could be my servers setup... could be an x2engine bug.

Create a custom shortcode.php

  • Create a new file here: custom/protected/components/x2flow/shortcodes.php
  • Add the following contents to the shortcodes.php: 
<?php

/* pulling the "core" file so that if it changes, my tweaks will just be added to the end */
$originalFile = str_replace(DIRECTORY_SEPARATOR.'custom','',__FILE__);
$shortcodes = include($originalFile);

$myShortCodes = array(
    'twilioFormattedPhone'=> '
        $phoneUtil = \libphonenumber\PhoneNumberUtil::getInstance();
        try {
            $USnumberProto = $phoneUtil->parse($model->phone, "US");
            $formatedphone = $phoneUtil->format($USnumberProto, \libphonenumber\PhoneNumberFormat::E164);
            return $formatedphone;
        } catch (\libphonenumber\NumberParseException $e) {
            //@todo do something here??
        }
    ');


return array_merge($shortcodes, $myShortCodes)
?>

This basically adds any shortcodes we put in this file to the default shortcodes that are found here: protected/components/x2flow/shortcodes.php .   The above file adds the shortcode {twilioFormattedPhone}.  This is JUST for the contact field with the name of 'phone'.   I should note that if you use this on other entities (opportunities, accounts, etc...) it won't probably won't work.  If you have a contact field called something different than 'phone'... you can change where you see `$model->phone` above to `$model->yourphonefield'.

 

A {twilioFormattedPhone} shortcode will be replaced with a phone number formatted in a way that twilio likes.  

 

How to use it in x2flows

 

Use a remote api action like so:

Attached File  x2_send_sms_zapier.png   30.59KB   0 downloads

 

  1. The url provided by zapier
  2. our shortcode (the phone number formatted how twilio likes).
  3. our message that we want sent
  4. A key.  Used just so that other people can't use our zapier url to send SMS's to people.

Setup Zapier like so:

 

Attached File  x2_send_sms_zapier_zap.png   430.47KB   1 downloads




#9319 use x2idenity data to add or remove from remarketing

Posted by that0n3guy on 06 January 2015 - 09:09 AM

My progress (untested... going live on my site today so I can test).  

 

So, basic usage.  

 

Step 1: Enable UserID in your google analytics account:

Admin->tracking info->user id.  See this image: http://screencast.com/t/nUv0J3MhdGZ

 

Step 2: Add the following javascript to your site (below the webTracker.php script):

    /**************************************************************
     * included from http://www.quirksmode.org/js/cookies.html
     *************************************************************/

    function createCookie(name, value, days) {
        if (days) {
            var date = new Date();
            date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
            var expires = "; expires=" + date.toGMTString();
        }
        else var expires = "";
        document.cookie = name + "=" + value + expires + "; path=/";
    }

    function readCookie(name) {
        var nameEQ = name + "=";
        var ca = document.cookie.split(';');
        for (var i = 0; i < ca.length; i++) {
            var c = ca[i];
            while (c.charAt(0) == ' ') c = c.substring(1, c.length);
            if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
        }
        return null;
    }

    function eraseCookie(name) {
        createCookie(name, "", -1);
    }

    /**************************************************************
     * Actual code below
     *************************************************************/

    var cookieRegistry = [];

    function listenCookieChange(cookieName, callback) {
        setInterval(function() {
            if (cookieRegistry[cookieName] || readCookie(cookieName) != null) {
                if (readCookie(cookieName) != cookieRegistry[cookieName]) {
                    // update registry so we dont get triggered again
                    cookieRegistry[cookieName] = readCookie(cookieName);
                    return callback();
                }
            } else {
                cookieRegistry[cookieName] = readCookie(cookieName);
            }
        }, 100);
    }

    /**************************************************************
     * Test below
     *************************************************************/

    // bind the listener
    var x2cookieName = 'x2_key';
    listenCookieChange(x2cookieName, function() {
        // Set the user ID using signed-in user_id.
        if (readCookie(x2cookieName) != null) {
            ga('set', '&uid', readCookie(x2cookieName));
        }
    });

So, my site looks like so: 

<script src="https://x2.myx2site.com/webTracker.php"></script>
<script>
    /**************************************************************
     * included from http://www.quirksmode.org/js/cookies.html
     *************************************************************/

    function createCookie(name, value, days) {
        if (days) {
            var date = new Date();
            date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
            var expires = "; expires=" + date.toGMTString();
        }
        else var expires = "";
        document.cookie = name + "=" + value + expires + "; path=/";
    }

    function readCookie(name) {
        var nameEQ = name + "=";
        var ca = document.cookie.split(';');
        for (var i = 0; i < ca.length; i++) {
            var c = ca[i];
            while (c.charAt(0) == ' ') c = c.substring(1, c.length);
            if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
        }
        return null;
    }

    function eraseCookie(name) {
        createCookie(name, "", -1);
    }

    /**************************************************************
     * Actual code below
     *************************************************************/

    var cookieRegistry = [];

    function listenCookieChange(cookieName, callback) {
        setInterval(function() {
            if (cookieRegistry[cookieName] || readCookie(cookieName) != null) {
                if (readCookie(cookieName) != cookieRegistry[cookieName]) {
                    // update registry so we dont get triggered again
                    cookieRegistry[cookieName] = readCookie(cookieName);
                    return callback();
                }
            } else {
                cookieRegistry[cookieName] = readCookie(cookieName);
            }
        }, 100);
    }

    /**************************************************************
     * Test below
     *************************************************************/

// create the cookie
//    createCookie('foo', 'bar');

    // bind the listener
    var x2cookieName = 'x2_key';
    listenCookieChange(x2cookieName, function() {
        // Set the user ID using signed-in user_id.
        if (readCookie(x2cookieName) != null) {
            ga('set', '&uid', readCookie(x2cookieName));
        }
    });
</script>

A minified version of the above script is as follows:

function createCookie(e,t,n){if(n){var r=new Date;r.setTime(r.getTime()+n*24*60*60*1e3);var i="; expires="+r.toGMTString()}else var i="";document.cookie=e+"="+t+i+"; path=/"}function readCookie(e){var t=e+"=";var n=document.cookie.split(";");for(var r=0;r<n.length;r++){var i=n[r];while(i.charAt(0)==" ")i=i.substring(1,i.length);if(i.indexOf(t)==0)return i.substring(t.length,i.length)}return null}function eraseCookie(e){createCookie(e,"",-1)}function listenCookieChange(e,t){setInterval(function(){if(cookieRegistry[e]||readCookie(e)!=null){if(readCookie(e)!=cookieRegistry[e]){cookieRegistry[e]=readCookie(e);return t()}}else{cookieRegistry[e]=readCookie(e)}},100)}var cookieRegistry=[];var x2cookieName="x2_key";listenCookieChange(x2cookieName,function(){if(readCookie(x2cookieName)!=null){ga("set","&uid",readCookie(x2cookieName))}})

What this does:

 

This basically sets the universal analytic userID if the user on the site to the x2_key (web tracking code) for that user.  If the webTracker changes the x2_key, it will see that it changed and change the userID as well.

 

Why do this:

I've not tested this yet.  But you should be able to setup some x2flows that will send user data to google via the "remote api call" trigger.  

 

For example.  User gets tagged with "white t-shirt".  Then you send an event to google like: 

http://www.google-analytics.com/collect?v=1&tid=UA-123456-1&uid={trackingKey}&t=pageview&dp=x2engine%2Fwhite-t-shirts

The above essentially logs a website "hit" at the url "x2engine/white-t-shirts"  (so if your domain for UA-123456-1 was "mysite.com", the url would be mysite.com/x2engine/white-t-shirts).  Now you could do remarketing campaigns based on website users who have been to "x2engine/white-t-shirts".

 

Issues with this:

  • I've not tested this fully yet. 
  • The url needs to be UTF-8 encoded.  That means that if you try to insert things with spaces from x2engine (example: {firstname}... don't do firstname though, google doesn't like personally identifiable info), it probably won't work.  So if you add a web url like I did (ie, x2engine/white-t-shirts) you will have to encode it yourself (http://meyerweb.com/...tools/dencoder/).
  • The documentation from google says you need a "cid" perameter, I don't know if that is true IF you have a UID (based on http://cutroni.com/b...-the-user-id/).

References:




#12703 Day 2, Switching to X2Engine from SuiteCRM

Posted by gnurob on 12 January 2017 - 05:08 PM

I'm on day 2 of an evaluation of X2Engine. What began as a skeptical test has quickly turned into a migration, complete with importing all Contact records and re-creating automated tasks. X2Engine is obviously a well polished, thoughtfully designed, and robust web application for CRM. A few subtle features are missing, however this is easily my preference versus poorly integrated and often buggy features in other systems.

 

My experience with CRM systems, in the past, has been a frustration, almost to the point of being a nightmare. In comparison, X2Engine (or XCRM if you prefer) has worked out of the box. In two days I have familiarized myself with the nuances of this systems Lead and Contact routing and how it manages the sales process (in my case, the customer service process, but more on that later). Later moving on to quotation forms, e-mail templates, and advanced features with automation (X2Flow).

 

In my experience, automation is the most difficult to accomplish in any system. The most common obstacles are visualizing logic paths, diagnosing failed triggers, and interacting with related records. X2Flow masterfully answers this by providing a visual flow chart with easy to follow graphics, a per flow trigger log that expands to provide step-by-step success/fail messages (super handy), and the ability to switch record types mid-flow. The latter requiring all sorts of error prone hoop jumping to accomplish.

 

X2Flow also has a healthy selection of variables (called attributes) that may be placed in form fields (as well as used anywhere else in the system). My only suggestions would be that formulas be expanded to include dates, and that the quote and calendar modules be as well integrated with XFlow as Contacts, Accounts, Opportunities, etc. (It actually feels bad to mention this as it works so well this is almost being too picky.)

 

For my purposes, a CRM is best used to provide a consistent high level of service to people that require my services in residential home inspection, commercial property condition assessment, and related consulting and design work. Since there are usually many individuals involved, contract values in real estate tend to be very high, and there is a high degree of reliability expected of my services; coordination and documentation are very important.

 

In 48 hours, this is what my system has been configured to do, with a great deal of assistance from templates, processes, workflows, and built-in relationships:

 

9:22 AM A potential client calls to require a home inspection.

  1. Made new Contact and Account over the phone
  2. Started a Quotation using a standardized template, set status to Draft
  3. Inserted several standard products into Quotation
  4. Saved Quotation, triggering an automatically created Opportunity
  5. Quoted client by e-mail (this later triggering Quotation status to be set as Issued)
  6. Issued Quotation triggering:
  7. - updated Contact lead information (status = working, deal value, assigned, confidence, etc.)
  8. - updated Account lead information (similar... and I wish I knew why we do this twice in CRMs)
  9. - E-mailed Contact a standard introduction
  10. - Created an Action reminder to set Quotation to Won before:
  11. --A 1-day follow-up
  12. --A 30-day closing.
  13. Updated the Quotation to Won (thank you to my new client)
  14. This automatically triggering:
  15. - Updates to Contact, Account, and Opportunity values
  16. - Starting the Inspection and Report Process to stage one, Quote Accepted
  17. - Several Actions to remind me to send notices to various 3rd parties including the property owner
  18. The Opportunity is used by me as a means to track each inspection contract, as it is the module that most easily connects several related records. Therefore, it is here that I add other Contacts as related to this record:
  19. - Buyers Agent
  20. - Vendors Agent
  21. - Property Owner (usually private sales)
  22. - etc.
  23. At any point, I can visit these other Contacts and see all the times we have worked on the same properties.
  24. Once an inspection is scheduled (this is manual, as Calendar is not well integrated) and the Inspection and Report Process is updated to that stage, a reminder is set to create the invoice.
  25. Creating an invoice sets various reminders, including 30, 60, and 90 days.
  26.  Once a report is issued, I believe follow-ups are important. Mainly to see where assistance may be required, but also because feedback drives improvements:
  27. - 24 hours, e-mail to confirm report received, can be opened, and if any questions have been raised (more than 1/2 the time clients have questions they didn't feel comfortable calling to ask).
  28. - 2 days, e-mail requesting feedback with link to form
  29. - 3 months (roughly following a change of season), a remind to revisit the report and address the most important areas as they relate to the upcoming season

9:30 AM I'm having coffee.

 

All these above 29 steps were easily built into my own work flow and help me best serve my clients. I don't believe this would be reasonable for an individual to tackle by themselves, but with the help of modern technologies, like X2CRM, the service level of my business is first class.

 

I hope these serves as a testimonial for anyone considering X2Engine for their own business, sales or otherwise. If this can be accomplished in 2 days, by one person, what can a team of people do in a year?

 

Cheers,

 

Rob




#12606 X2TechTalk V - X2CRM 6.5 Preview

Posted by John Roberts on 21 December 2016 - 02:12 PM

Hello everyone,

 

Boy this TechTalk is a bit overdue, I delayed it a few week so we could give 6.5 more time. It does provide good introductions to new location or X2Checkin, Google Maps, major Calendaring and Google sync improvements and X2Touch mobile 2.0 features. We are about to release 6.5.2 within the next few days. Over the coming weeks we are planning to do major documentation, video and website updates to help show you how to easily design, deploy and manage your X2CRM system.

 

X2TechTalk V: X2CRM 6.5 Preview

https://player.vimeo...&profile_id=174

 

Best, 

X2CRM Team




#13573 should we upgrade to x2crm 6.9?

Posted by X2Isaiah on 02 August 2017 - 08:40 AM

Hey medotron,

 

Yes updating to 6.9 would be the best option. The open source will still receive the most recent bug fixes. In regards to the recurring expire bug, that bug is now fixed in 6.9. Make sure you clear your cookies after you update.




#13543 Sharing Custom changes to X2CRM

Posted by gsonline on 20 July 2017 - 01:05 AM

Hi, 

 

If I have a developer make custom improvements to X2CRM is there a way to share it with the rest of the community or a way to share it with the X2CRM team to maybe add it to the next X2CRM release.

 

Thank you  




#13539 [Solved] Track date of email opened.

Posted by gsonline on 15 July 2017 - 07:37 AM

How can I track the date an email is opened so I can make a report of that data. 

 

What I need to do is save the date and time of the email open 

How do I do this with the workflow?

Attached File  email open.JPG   91.92KB   0 downloads

 

I know this should be very simple but I can't seem to figure it out - I want the date of the field should be the time that the email is opened.

 

 

UPDATE **** Figured it out :)

 

1) made a new field (email open date)

2) made a flow to add date of last activity when an email is opened -- 

Attached File  email open - done.JPG   43.78KB   0 downloads




#13502 [Solved] How can I get the url from aWeb form lead

Posted by eugeneb on 04 July 2017 - 09:33 AM

Awesome Ray, it works fantastic,

 

FEATURE APPLICATION:

The value of this little feature is using one web-form on various products on an online shop where customers can ask product specific questions per product. Because you know where the question originated from, you can answer for that specific product. Using this field in your user notification email you can notify yourself quickly to help a customer. I also use a eMail-to-SMS server to send me SMS notifications and this little field info makes the world of difference.

 

You guys rock!




#13479 [Solved] How do I setup Macro's ?

Posted by gsonline on 29 June 2017 - 12:16 AM

Thanks ! 

This helps a bunch :)




#13200 Email to only contacts who has not opened email

Posted by X2Raymond on 13 April 2017 - 02:14 PM

Currently there is no way to use the UI to split the non-openers from your list. This won't work for a campaign you've already executed, but in the future you should be able to do so using tags.

 

You'll want to tag everyone on your list with a tag specific to that campaign, like #spring17nonopener. Then, set up a workflow to trigger on Campaign Email Opened, limited to just this campaign. Then, add an action to remove the #spring17nonopener tag. With this in place, you can create a new dynamic list based on the Contacts who have the tag.




#13069 X2CRM and Mailchimp Integration [solved]

Posted by dbastreghi on 16 March 2017 - 07:28 AM

Hi,

 

After many hours trying to integrate X2CRM and Mailchimp, I finally found something that may be usefull. It sends every contact to a Mailchimp list.

 

Follow this steps:

 

1. Ceate a Workflow with the trigger "Record created" to contacts.

 

2. Add the action "Remote API Call" to the flow.

 

 

3. Fill the fields like this:

 

URL: https://[your-mailchimp-server].api.mailchimp.com/3.0/lists/[your-list-id]/members

Method: POST

Use JSON payload? Checked

JSON:

{
    "email_address": "{email}",
    "status": "subscribed",
    "merge_fields": {
        "FNAME": "{firstName}",
        "LNAME": "{lastName}"
    }
}

 

4. Click on "Add Header" and fill it:

 

Name: Authorization

Value: apikey [your-api-key]

 

5. It would be enought to it works. But there is a bug on X2CRM 6.5.2 that replaces the tag {email} with HTML code. So Mailchimp wont recognize it. To fix it, open the file /protected/components/x2flow/actions/X2FlowApiCall.php and add code bellow at line 210:

 

$data = strip_tags(htmlspecialchars_decode($data));

 

- - - - - - -

 

If you know nothing about it, check out this video: https://teamtreehous...rs-to-your-list

 

That's all.




#12908 About "Compare Attribute" conditions in workflows

Posted by X2Raymond on 24 February 2017 - 10:06 AM

You can perform dynamic date calculations by using the "formula" syntax, similar to that in Excel but with the X2CRM insertable attributes. You can use the {timestamp} attribute to represent the current time represented as a UNIX timestamp (number of seconds since the epoch, Jan 1, 1970). Then, add or subtract the number of seconds for your offset, like:

 

={timestamp} + (# of days * # of hours * # of minutes * # of seconds)

 

Outside of the formula, you can also use string representations like "today" when under the English locale. Please see this related thread for more detailed information: http://community.x2c...d-calculations/




#12775 Live Chat

Posted by X2Josef on 23 January 2017 - 10:01 PM

Hey Eugene, 

 

 

This feature does sound great. Such a feature will be considered in a future release.

 

 

 

Cheers,

 

Josef




#12358 Mass Delete

Posted by Petrovlis on 23 September 2016 - 09:46 PM

I am a paid Ultimate user , local installed, Windows10 , but new to X2CRM,  a very very good program !!!

 

I wonder, if I have done an Import of Accounts/Customers say 50.000, can I then Mass Delete all those, if for some reason later , I did forget some Custom fields in the CSV files,to be imported?

 

In Zoho I had similar problem and could do only 50/100 per page  and in Apptivo the same, mass delete in Apptivo Customers.Contacts mass-delete was running OK, but it went to the TRASH module, and there it can

only be deleted per 50 per page. Apptivo is now working (in the Code) to help me to update this bug.If in Trash, new re-import gives ALL as duplicates...,so that was not good.

 

Zoho was so friendly to ask for the CVID's ,which I gave to  them and they are mass deleting  for me in their own system, to clean up.

 

So I wonder if X2CRM is looking to this and if mass deletes are possible.

 

 

William




#12340 WordPress Plugin

Posted by PixelStudio_99 on 05 September 2016 - 11:47 AM

Found a Wordpress plugin that works with Contact Form 7 as an alternative method for capturing web leads to the x2CRM packaged web forms. Also, adds the web tracking snippet to the website for tracking visitors.

 

Figured I share in the event someone was looking

 

http://bit.ly/2cmZDLp 




#11974 X2CRM Development

Posted by X2Jake on 05 May 2016 - 11:37 AM

Hi, all!

 

With the release of X2CRM 6.0 we are pleased to announce a revamp of our development process to make contributions from the community a possibility. Previously, our open source repository was only used to release the open source edition of the codebase on GitHub but going forwards we will be moving all active development into this repository. This means that we will be accepting pull requests from the community as well as using GitHub's issue tracker which we were previously incapable of doing.

 

To get started with contributing to X2CRM, the first thing we need you to do is to sign our Contributor License Agreement so that we can accept your code into our codebase.

 

In terms of how the GitHub repository is structured, the "master" branch will be used for releases so that if someone comes to the repository and downloads the current master branch they will have a stable version of the project to install. All development will occur on the appropriately named "development" branch, with larger projects by core X2Engine developers having their own branches. Please see the CONTRIBUTING.md file on our Git repository for more detailed instructions for development.

 

As time goes on we will be updating this post with more information about our development process. We plan to transition to using the PSR-2 coding standards and Travis CI in the near future.

 

UPDATE: We have decided to publicize some of our internal development tools that makes installing and developing X2CRM easier. You can find these tools at the GitHub repository here: https://github.com/X...2DeveloperTools




#11958 X2CRM 6.0 Released - now with open source X2Workflow & Mobile

Posted by John Roberts on 02 May 2016 - 04:34 PM

Last week we released X2CRM version 6.0. This release has a number of exciting features but first I would like to provide a general X2Engine | X2CRM update and forward looking road map for the remainder of this year.

 

Founded in 2011 and after five years of growth we are now at the stage where X2CRM Cloud Hosting Services now can fully fund company operations – thank you X2VPS customers. At the same time it was felt 6.0 was the right time to fully open source X2Platinum Edition. With version 6, all commercial X2CRM editions have now been combined into a single release and relicensed under the GNU Affero GPL v3 open source license. X2CRM is fully committed to providing the best open source CRM software. Having one open source edition will make it easier to add new features and also to share the full power of X2CRM as free and open software.

 

As software developers, you not only want to be successful with the applications you create, but also see them used as fully as possible, by as many folks as possible. Now having only one, X2CRM software application will enable a much richer extension ecosystem around the fully open source X2CRM platform. Join us in the coming weeks as we transform X2Community.com into a real thriving code and CRM knowledge sharing destination.

 

The X2CRM 6.0 release centered on user experience improvements with the additional of a new lighter default theme and a new Night theme. X2Touch mobile applications continue to be a priority and are in active development with new versions rolling out over the next few weeks..




#11693 Installation ok, but X2CRM very slow

Posted by PublishItNow on 11 February 2016 - 05:33 PM

Hi Raymond,

 

Thankyou for the advice. I dug in a bit deeper and did some experimentation, and discovered what was slowing PHP down was actually having FastCGI Application setup to handle PHP. When I changed it over to a standard CGI Application, everything sped up quite nicely. Thought it might be worth mentioning in case someone else runs into the same issue. 

 

Warmest regards,

 

Andrew




#11666 Default font for email template

Posted by eugeneb on 08 February 2016 - 05:19 AM

Hi guys,

 

is there a way to set the default system font for new emails, docs and templates to something like Verdana. The email defaults to Times and one has to change it manually to something else. We use Verdana as default.

 

it would help greatly with generating emails.

 

Thanks

 

Eugene